2017-02-17 14 views
0

私は複数のサーバーに投稿要求を出しています。これらのサーバーは1つを除くすべてのjsonを返します。そのうちの1人が次のようなデータを返します:1fe2 80b9 0800 0000 0000 0400 c3ac c2bd。C#でポストリクエストを行うと、奇妙な出力が発生する

私は残りのクライアントと同じことをすると、すべてのサーバーが有効なJsonから取得しますが、C#で行うと、サーバーの1つがその種類のデータを返します。

私はこれを行うには、次のコードを使用し

public static string MakeRequest(string url, string requestBody, string methodName) 
     { 
      string result = ""; 
      using (var client = new WebClient()) 
      { 
       client.Headers[HttpRequestHeader.ContentType] = "application/json"; 
       result = client.UploadString(string.Format("{0}{1}", url, methodName), "POST", requestBody); 
      } 
      return result; 
     } 

私も、この(旧コード)を試してみました:

public static string MakeRequestA(string url, string requestBody, string methodName) 
     { 
      byte[] postBytes  = Encoding.ASCII.GetBytes(requestBody); 

      var request  = (HttpWebRequest)WebRequest.Create(string.Format("{0}{1}", url, methodName)); 
      request.KeepAlive  = false; 
      request.ProtocolVersion = HttpVersion.Version11; 
      request.Method   = "POST"; 
      request.ContentType  = "application/json"; 
      request.Accept   = "text/plain"; 
      request.ContentLength = postBytes.Length; 

      Stream requestStream = request.GetRequestStream(); 

      requestStream.Write(postBytes, 0, postBytes.Length); 
      requestStream.Close(); 

      WebResponse response = request.GetResponse(); 
      Console.WriteLine (((HttpWebResponse)response).StatusDescription); 

      var dataStream = response.GetResponseStream(); 
      var reader = new StreamReader (dataStream); 
      string responseFromServer = reader.ReadToEnd(); 

      reader.Close(); 
      dataStream.Close(); 
      response.Close(); 
      return responseFromServer; 
     } 

彼らはあるので、私は本当にあなたのサーバーのURLを与えることはできませんプライベート。誰でも私はなぜ有効なJSONの代わりにこのデータを取得しているのか?

+0

要求のヘッダーにユーザーエージェントとホストを追加する必要があります。最近私は、適切なユーザーエージェントなしでリクエストを処理できなかったWebサービスで作業しました。 –

+0

[Fiddler](http://www.telerik.com/fiddler)プロファイラを入手し、どちらの場合でも何がサーバーに送信されるのかを確認すると、その違いを確認できます。 – trailmax

+0

確かに私には分かりませんが、もっと多くのヘッダーを追加する必要があります。リストについては、https://www.soapui.org/testing-dojo/best-practices/understanding-rest-headers-and-parameters.html –

答えて

0

HIお客様のマシンにフィドラーツールをインストールし、そのチェックを行って、RESTクライアントによって生成されたリクエストヘッダーをインストールしてください。また、.netクライアントによって生成されたリクエストヘッダを取得します。次に、両方のリクエスト形式を比較して解決策を見つけてください。

+1

コメント欄でこれをしてください。これは答えとはみなされません。 – Hemal

関連する問題