2012-04-30 3 views
0

私はPHPでcURLを使用してAsana APIにアクセスしています。GETではなくAsanaにデータをPOSTする方法は?

私の値をURLにGETとして追加してもうれしかったが、今では私のアプリが大きくなるにつれ、私はますます多くのデータをポストしているので、ポストに変換しようとしている。

これまでのところ、私が試した:私の方法については

setting post['data'] to a json object {key:value,key:value} 
setting post['data'] to a json object {options:{key:value,key:value}} 
setting post['data'] to a json object {data:{options:{key:value,key:value}}} 
setting post['data'] to a json object {data:{key:value,key:value}} 
setting post['body'] to all of the above json objects 

をこれまでのところ、私はエラーで終わる:カールを使用し

Could not parse request data, invalid JSON 

は、もちろん、私はこれをやっています:

$post = json_encode($myFields); 
curl_setopt(CURLOPT_POSTFIELDS,array('data'=>$post)); 

これらのテストでは、JSONを出力してJSLintで検証しています。それは非常に有効なJSONです。問題は間違いありません。私はちょうどそれが有効でない理由を知る必要があります。

私はそれを正常に動作させることはできません。助けてくれてありがとう - Daniel。私はアサナのAPIのためのPHPクラスラッパーを作っ

$post = json_encode(array('data' => $myFields)); 
curl_setopt(CURLOPT_POSTFIELDS, $post); 
+0

これは十分ではないので、あなたのコードを表示してください。 – Sedz

+0

私のコードを少し追加しました。 – DanRedux

+0

このスレッドに記載されている情報は役に立ちますか? http://stackoverflow.com/questions/5224790/curl-post-format-for-curlopt-postfields – Daan

答えて

0

はJSONにすべてのあなたの配列だけでなく、「データ」の部分をエンコードしてみてください。あなたはここにそれをつかむことができます:

+0

Adrienは、CURLOPTポストフィールドを設定すると、key-> valueの配列をとり、ポストフィールドとしてすべて使用できるので、 'data'は私のキーで、値は' json_encode($ myFields); ' – DanRedux

+1

しかし、公式のAsana APIのドキュメントでは、JSONエンコードされた配列に 'data'を置いているようです。なぜ彼らのAPIがあなたのJSONリクエストを処理することを拒否しているのかを説明しています。http://developer.asana.com/ドキュメンテーション/#ユースケース – Daan

+0

ダン、私はそれを試してみましたが、うまくいきませんでした。何らかの理由で仕事を断るだけです。ドキュメントの例では、JSONをネットオブジェクトの 'body'プロパティに割り当てました。私はPHPに相当するものがわからない。 – DanRedux

関連する問題