Ich bin neu in JSON und C# und versuchen, einen Code zu schreiben, der eine HTTP-Web-Anfrage POST ausführen wird, um ein Token zu erhalten. Unten ist mein Code, aber ich bekomme immer 400 schlechte Anfragen. Wahrscheinlich sind meine Codes einfach inkorrekt und ich werde für jede Hilfe dankbar sein. Unten ist mein Code:C# JSON Beitrag mit HttpWebRequest
static public string GetAuthorizationToken()
{
string token = string.Empty;
string requestUrl = "some URL";
HttpWebRequest httpWebRequest = WebRequest.Create(requestUrl) as HttpWebRequest;
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "x-www-form-urlencoded";
Dictionary<string, string> postParameters = new Dictionary<string, string>();
postParameters.Add("grant", "some credentials");
postParameters.Add("id", "1234123411");
postParameters.Add("secret", "1234123411");
postParameters.Add("scope", "abcd");
string postData = "";
foreach (string key in postParameters.Keys)
{
postData += WebUtility.UrlEncode(key) + "="
+ WebUtility.UrlEncode(postParameters[key]) + "&";
}
byte[] data = Encoding.ASCII.GetBytes(postData);
httpWebRequest.ContentLength = data.Length;
Stream requestStream = httpWebRequest.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
TokenResponse tokenResponse = new TokenResponse();
using (HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse)
{
if (response.StatusCode != HttpStatusCode.OK)
throw new Exception(String.Format(
"Server error (HTTP {0}: {1}).",
response.StatusCode,
response.StatusDescription));
DataContractJsonSerializer responseSerializer = new DataContractJsonSerializer(typeof(TokenResponse));
Stream responseStream = response.GetResponseStream();
object objResponse = responseSerializer.ReadObject(responseStream);
tokenResponse = objResponse as TokenResponse;
response.Close();
if (tokenResponse != null)
{
return tokenResponse.accessToken;
}
}
return token;
}
Content-Type ist für einen JSON-Anfragetext falsch. Versuchen Sie "application/json" anstelle von "x-www-form-urlencoded" (was für Standard-Abfragezeichenfolgedaten ist) – Quintium
Danke Quintium. Wahrscheinlich war es mein Fehler, JSON in der Anfrage zu verwenden, während der Inhaltstyp für Abfrage-String-Daten ist. Ich habe die untenstehenden Codes aktualisiert und erhalte immer noch 400 fehlerhafte Fehler. – BanggaDad
Könnte völlig unabhängig sein, aber normalerweise Authentifizierungsdaten in der Kopfzeile gesendet, und könnte dies der Grund sein? –