Meine Hände sind in der Luft - ich weine, Onkel. Helfen Sie mir zu verstehen:ASP.Net httpwebrequest nicht Buchungsanfrage Körper
Ich schrieb eine einfache HttpWebRequest Buchung an einen Kunden https://website. Es hat spezifische Header-Anforderungen und einen JSON-Anfragetext. Der GetResponseStream ist nach dem Empfang einer GetResponse StatusCode.OK ein Fehler, der von ihrem Server bereitgestellt wird. Sie überprüften ihre Protokolle und sagte, während die Header vorhanden waren, die Anfrage Body „war
Hier ist mein Code:.
public const string API_URILogin = "https://dev.clientURL.com/test/api/login";
private void RequestTest()
{
LoginAPIStruct loginInfo = new LoginAPIStruct();
loginInfo.loginId = TestId;
loginInfo.password = TestPw;
loginInfo.vehicleType = "E";
loginInfo.deviceId = "ABCDEF";
loginInfo.clientId = "123456";
loginInfo.appVersion = string.Empty;
loginInfo.osType = string.Empty;
loginInfo.osVersion = string.Empty;
// Call LoginAPI
string loginStatus = LoginAPI(loginInfo);
//Display Results
lblResults.Text = loginStatus;
}
// Public Variables
public static string errorMessage;
// ** Client Login **
public static string LoginAPI(LoginAPIStruct loginInfo)
{
// Post Login to Client. Get response with Vehicle structure.
string loginInfoSerialized = string.Empty;
string returnString = string.Empty;
loginInfoSerialized = new JavaScriptSerializer().Serialize(loginInfo);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(API_URILogin);
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("From", "CC");
request.Headers.Add("Language", "0");
request.Headers.Add("Offset", "-8");
request.Headers.Add("To", "CCM");
// Post Request
using (StreamWriter streamPost = new StreamWriter(request.GetRequestStream()))
{
streamPost.Write(loginInfoSerialized);
}
// Get Response
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
// Status Okay.
//string responseStatusDescription = response.StatusDescription;
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
try
{
var result = streamReader.ReadToEnd();
returnString = result;
}
catch (Exception ex)
{
returnString = ex.Message;
}
}
}
else
{
returnString = response.StatusCode.ToString();
}
return returnString;
} // end LoginAPI
Meine JSON-String scheint gültig zu sein - ich fügen Sie ihn in Fiedler, zusammen mit die Header setzen, und Fiddler gibt eine erfolgreiche Anmeldung zurück
Von ASP.Net gibt es ihren dokumentierten Fehler, dass die E-Mail-Adresse (LoginId) erforderlich ist. Ich sehe nichts falsch in meinem C# -Code Sonst könnte der Client etwas auf seiner Hosting-Site haben, das eine bestimmte Anfrage blockiert oder herausfiltert? Ich stecke fest.
Update: Ich habe festgestellt, wie ASP.net konfiguriert wird, damit Fiddler als Proxy fungiert. GlobalProxySelection.Select = new WebProxy ("127.0.0.1", 8888); Ich sehe meine Header, aber die Content-Länge ist auf 0 gesetzt und kein Inhalt wird gesendet. WARUM? – IrvineCAGuy