2017-12-18 33 views
0

APIをリクエストしようとすると、このエラーが発生します。 APIについて いくつかの詳細:メソッドがPOSTで、(私は郵便配達でそれをしようとすると、何の問題)のパラメータは、あまりにも、正しいませんAPIにPOST要求を送信中にエラーが発生しました(この動詞タイプの本文を送信できません)

ここでは私のコードです:

JavaScriptSerializer js = new JavaScriptSerializer(); 
using (WebClient client = new WebClient()) 
{ 
    foreach (var ad in documents) 
    { 

     var doc = js.Serialize(ad); 
     var json = "{\"Message\":\"" + doc + "\"}"; 

     var response = 
      client.UploadValues("apiUrl", new NameValueCollection() 
      { 
       {"json", json} 
      }); 
    } 
} 

私はUploadValuesであることを読んでデフォルトでPOST。このコードは、単純なコンソールアプリケーションで呼び出されます。なぜこのエラーが出るのか?ここで

+2

'WebClient'と' JavaScriptSerializer'両方がほとんど廃止され、あなたが 'NewtonSoft.Json' –

+1

' VARのJSON =「{で 'HttpClient'を使用する必要があります\ "Message \":\ "" + doc + "\"} ";' Yuk。なぜそれを手で造るのですか?それはちょうどキャッチ可能な構文エラーを求めているだけです。あなたはすでにシリアライザ(古いものですが)とNameValueCollectionを使用していますので、その間に文字列をランダムに作成するのはなぜですか?とにかく、郵便配達では動作しますが、これでは動作しない場合は、最初に行うべきことは、Fiddlerのようなツールを使って両方のリクエストを傍受し、2つの異なるソフトウェアによって生成された実際のHTTPリクエストの差を見ます。 – ADyson

+0

コメントをいただきありがとうございます。このコードで作業しています! – Jydai

答えて

2

は、コードの作業部分です:

var doc = JsonConvert.SerializeObject(message);  
var stringContent = new StringContent(
     message, 
     UnicodeEncoding.UTF8, 
     "application/json"); 

HttpClient client = new HttpClient();     

client.PostAsync("apiUrl", stringContent); 
関連する問題