0

ruby 1.9.3 と httparty gem を使用して、次の API GET リクエストを作成しています。

uri= HTTParty.post("www.surveys.com/api/v2/contacts",
:basic_auth => auth,
:headers => { 'ContentType' => 'application/json' },
:body => {
  "custom_test" => test,
  "name" => firstname,
  "email" => emailaddress
}

)

変数authtestfirstname、およびemailaddressは有効です。これは、私の要求から返された応答です。

{
  "code": "invalid_json",
  "description": "Request sent with Content-Type: application/json but was unable to decode request body as valid json.",
  "success": false
}
500
#<Net::HTTPInternalServerError:0x007fe4eb98bde0>

この JSON リクエストを投稿する方法の何が問題になっていますか?

編集: API を使用すると、連絡先にカスタム属性を定義できるため、本文に「custom_test」属性を定義できることに注意してください。

4

2 に答える 2

4

受け入れられない (406) の代わりに内部サーバー エラー (500) を受け取っているため、おそらくサーバーにコーディングの問題があります。間違っています(これが私の最初の推測です)。

しかし、JSON 通信に問題があるとしましょう。おそらく、json 形式を受け入れることを指定する必要がありますか?

試す

:headers => { 'ContentType' => 'application/json', 'Accept' => 'application/json' },

w3からヘッダー定義を受け入れます。

Accept 要求ヘッダー フィールドを使用して、応答に受け入れられる特定のメディア タイプを指定できます。Accept ヘッダーを使用して、インライン画像のリクエストの場合のように、リクエストが目的のタイプの小さなセットに限定されていることを示すことができます。

そして content-type ヘッダーの定義:

Content-Type エンティティ ヘッダー フィールドは、受信者に送信されるエンティティ ボディのメディア タイプを示します。HEAD メソッドの場合は、リクエストが GET の場合に送信されるメディア タイプを示します。

于 2013-08-20T19:12:33.087 に答える