207

Ruby on Rails アプリケーションで、POSTMAN RESTクライアントを介して画像をBase64形式でアップロードしようとしました。画像を投稿すると、406 Not Acceptable Response が返されます。データベースを確認したところ、画像はそこにあり、正常に保存されていました。

このエラーの理由は何ですか? ヘッダーに指定する必要があるものはありますか?

私の要求:

URL --- http://localhost:3000/exercises.json

ヘッダ:

Content-Type  -  application/json

生データ:

{
    "exercise": {
        "subbodypart_ids": [
            "1",
            "2"
        ],
        "name": "Exercise14"
    },
    "image_file_name": "Pressurebar Above.jpg",
    "image":"******base64 Format*******"
}
4

9 に答える 9

290

操作は失敗しませんでした。

バックエンド サービスは、返されるレスポンス タイプがクライアント リクエストのAccept HTTP ヘッダーで提供されていないと言っています。

参照: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

  1. Service から返された応答 (コンテンツ タイプ) を調べます。
  2. これ (コンテンツ タイプ) をリクエストの Accept ヘッダーに指定します。

http://en.wikipedia.org/wiki/HTTP_status_code -> 406

于 2013-01-10T06:52:00.977 に答える
44

406 Not Acceptable 要求によって識別されたリソースは、要求で送信された受け入れヘッダーに従って受け入れられないコンテンツ特性を持つ応答エンティティを生成することしかできません。

406 は、サーバーが要求で指定された accept-header で応答できない場合に発生します。あなたの場合、応答の application/json がサーバーに受け入れられないようです。

于 2013-01-10T06:17:03.977 に答える
8

Ruby on Rails をバックエンドとして使用しているとのことでした。関連するメソッドのコードを投稿しませんでしたが、私の推測では、次のようになります。

def create
  post = Post.create params[:post]
  respond_to do |format|
    format.json { render :json => post }
  end
end

次のように変更します。

def create
  post = Post.create params[:post])
  render :json => post
end

そして、それはあなたの問題を解決します。それは私のために働いた:)

于 2014-08-03T08:41:31.447 に答える
1
const request = require('request');

const headers = {
    'Accept': '*/*',
    'User-Agent': 'request',
};

const options = {
    url: "https://example.com/users/6",
    headers:  headers
};

request.get(options, (error, response, body) => {
    console.log(response.body);
});
于 2016-12-09T19:56:00.183 に答える
1

私の場合、次のように追加しました。

Content-Type: application/x-www-form-urlencoded

私の問題を完全に解決しました。

于 2016-08-29T23:10:53.817 に答える