Ich mache eine Post-Anfrage an mehrere Server. Diese Server geben alle JSON außer einem zurück. Einer von ihnen gibt Daten wie folgt zurück: 1fe2 80b9 0800 0000 0000 0400 c3ac c2bd.Eine Post-Anfrage in C# führt zu seltsamen Ausgabe
Wenn ich das gleiche mit einem Rest-Client mache, bekomme ich von allen Servern gültige JSON, aber wenn ich es in C# mache, gibt einer der Server diese Art von Daten zurück.
Ich verwende den folgenden Code, dies zu tun:
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;
}
ich auch mit diesem (alten Code) versucht:
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;
}
Ich kann nicht wirklich geben Sie die Server-Urls, weil sie Privatgelände. Jemand eine Ahnung, warum ich diese Daten anstelle von gültigen Json bekomme?
Möglicherweise müssen Sie dem Header Ihrer Anforderung einen Benutzeragenten und einen Host hinzufügen. Kürzlich habe ich mit einem Web-Service gearbeitet, der die Anfrage ohne den richtigen User-Agent nicht bearbeiten konnte. –
Erhalten Sie [Fiddler] (http://www.telerik.com/fiddler) Profiler und sehen Sie, was in beiden Fällen an den Server gesendet wird, und Sie können den Unterschied sehen. – trailmax
In der Tat müssen Sie möglicherweise weitere Header hinzufügen, obwohl ich nicht sicher bin, welche. Eine Liste finden Sie hier: https://www.soapui.org/testing-dojo/best-practices/understanding-rest-headers-and-parameters.html –