36

RSS 読み取りサービスのクライアントを構築しています。RestSharpライブラリを使用して API とやり取りしています。

API は次のように述べています。

レコードを作成または更新するときは、ヘッダーapplication/json;charset=utf-8として設定する必要があります。Content-Type

これは私のコードがどのように見えるかです:

RestRequest request = new RestRequest("/v2/starred_entries.json", Method.POST);
request.AddHeader("Content-Type", "application/json; charset=utf-8");
request.RequestFormat = DataFormat.Json;
request.AddParameter("starred_entries", id);

//Pass the request to the RestSharp client
Messagebox.Show(rest.ExecuteAsPost(request, "POST").Content);

でも; サービスがエラーを返しています

エラー 415: 'Content-Type: application/json; を使用してください。charset=utf-8' ヘッダー

RestSharp がヘッダーを渡さないのはなぜですか?

4

5 に答える 5

39

バージョン 105.2.3.0 では、次の方法で問題を解決できます。

var client = new RestClient("https://www.example.com");
var request = new RestRequest("api/v1/records", Method.POST);
request.AddJsonBody(new { id = 1, name = "record 1" });
var response = client.Execute(request);

古い質問ですが、それでも私の検索のトップです-完全を期すために追加します。

于 2016-08-25T09:57:33.900 に答える
10

これは少し古いですが、同じ問題に遭遇しました..「コンテンツタイプ」や「日付」などの一部の属性はパラメーターとして追加できず、内部的に追加されているようです。「コンテンツタイプ」の値を変更するには、シリアライザーの設定を変更する必要がありました (ただし、以前にシリアル化されたボディに json を追加したため、使用しませんでした!)

RestClient client = new RestClient(requURI);
RestRequest request = new RestRequest(reqPath, method);
request.JsonSerializer.ContentType = "application/json; charset=utf-8";

これを行うとすぐに、ヘッダーが意図したとおりに表示されました。

 System.Net Information: 0 : [5620] ConnectStream#61150033 -   Header 
 {
  Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
  User-Agent: RestSharp 104.1.0.0
  Content-Type: application/json; charset=utf-8
  ...
 }
于 2015-03-17T10:36:55.713 に答える
3

おそらくこの問題に遭遇します: https://github.com/restsharp/restsharp/issues/221 @ http://itanex.blogspot.co.at/2012/02/restsharp- and-advanced-post-requests.html

于 2013-07-27T19:12:55.623 に答える
-4

ここに解決策があります

http://restsharp.blogspot.ca/

同じ名前のプロパティを持つ json オブジェクトを作成し、値を設定します (ポスト リクエストの名前と値のペアの値と同じであることを確認してください)。

その後、デフォルトの httpclient を使用します。

于 2014-02-22T20:49:03.157 に答える