Ich versuche, JSON-Daten (in Datei vorhanden) an JSON POST-Methode zu übergeben.Übergabe von JSON-Daten an die REST-POST-Methode
Aber erhalten HTTP 400 Fehler (Bad Request) - "Der Remote-Server gab einen Fehler zurück: (400) Bad Request."
Bitte helfen.
Schnittstelle -:
[OperationContract]
[WebInvoke(UriTemplate = "/JSON", Method = "POST")]
string CreatePersonFromJSONString(Person createPerson);
implementierte Funktion -:
public string CreatePersonFromJSONString(Person createPerson)
{
createPerson.ID = (++personCount).ToString();
persons.Add(createPerson);
return new JavaScriptSerializer().Serialize(createPerson);
}
Programm -:
HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest;
req.KeepAlive = false;
req.Method = Method.ToUpper();
if (("POST,PUT").Split(',').Contains(Method.ToUpper()))
{
Console.WriteLine("Enter JSON FilePath:");
string FilePath = Console.ReadLine();
content = (File.OpenText(@FilePath)).ReadToEnd();
req.ContentType = "application/json;";
//initiate the request
JavaScriptSerializer serializer = new JavaScriptSerializer();
var resToWrite = serializer.Deserialize<Person>(content);
StreamWriter PostData = new StreamWriter(req.GetRequestStream());
PostData.Write(resToWrite);
PostData.Flush();
PostData.Close();
}
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
Eingabedatei - Inhalt:
{ "Age":"25",
"ID":"4",
"Name":"Ashish"
}
Person Klasse -:
[DataContract]
public class Person
{
[DataMember]
public string ID;
[DataMember]
public string Name;
[DataMember]
public string Age;
}
Uri - http://localhost:5171/RestService/JSON
Method - POST
Kann treffen Sie Ihre REST-Service über einen Rest-Client wie Post-Mann? Ich habe versucht, Ihr JSON scheint nicht gültig zu sein. Zum http://jsonlint.com/ und fügen Sie Ihre JSON in Humor mich, und verwenden Sie diese als Eingabe { \t "Alter":. "25", \t "ID": "4", \t " Name ":" Ashish " } –
Ich kann dies mit Advanced Rest Client testen, indem ich den JSON-Text übergebe. Ich habe auch die Eingabe JSON korrigiert. Aber immer noch den gleichen Fehler. Höchstwahrscheinlich liegt der Fehler in der Übergabe von JSON-Daten im Anfragestream. req.ContentType = "application/json; charset = utf-8"; // initiiere die Anfrage JavaScriptSerializer serializer = new JavaScriptSerializer(); var resToWrite = serializer.Deserialize (Inhalt); StreamWriter PostData = neuer StreamWriter (req.GetRequestStream()); PostData.Write (resToWrite); PostData.Flush(); PostData.Close(); –
Wenn du es über einen Rest-Client triffst, bekommst du noch eine schlechte Anfrage? –