2016-04-14 2 views
0

Ich habe WCF MethodeBeitrag JSON-String zu WCF-Methode

[OperationContract] 
[WebInvoke(Method = "POST", 
RequestFormat = WebMessageFormat.Json, 
ResponseFormat = WebMessageFormat.Json, 
BodyStyle = WebMessageBodyStyle.Wrapped)] 
string PostNewOrder(string OrderData); 

Dies ist der JSON-String, die ich

{ 
    "customerId": " ", 
    "langCode": "SE", 
    "timeZone": "38", 
    "orderNumber": "1122519", 
    "orderDate": "2016-04-13 15:56:36", 
    "deliveryNumber": "625615", 
    "devices": "000000001050840;", 
    "transactionId": "24", 
    "shipDate": "2016-04-13 16:41:31" 
} 

bin Entsendung Aber ich bin immer Order als null in der WCF-Methode

Wenn ich die Zeichenfolge

"{\"customerId\":\" \",\"langCode\":\"SE\",\"timeZone\":\"38\",\"orderNumber\":\"1122519\",\"orderDate\":\"2016-04-13 15:56:36\",\"deliveryNumber\":\"625615\",\"devices\":\"000000001050840;\",\"transactionId\":\"24\",\"shipDate\":\"2016-04-13 16:41:31\"}" 

Es funktioniert gut, aber das ist kein richtiger json, Vielen Dank im Voraus ..

+2

Können Sie uns den Code zeigen, wo Sie Ihr Objekt in die JSON-Zeichenfolge konvertieren? – bit

+0

Nein, ich benutze nur Post-Man-Client, um die JSON-String auf die Methode wcf zu buchen. –

Antwort

1

Ihren Vertrag entfernen müssen, sollten etwas aussehen -

[OperationContract] 
    [WebInvoke(Method = "POST", 
    RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json , 
    UriTemplate="/post")] 
    string PostNewOrder(RootObject OrderData); 

wo RootObject aussehen sollte -

public class RootObject 
{ 
    public string customerId { get; set; } 
    public string langCode { get; set; } 
    public string timeZone { get; set; } 
    public string orderNumber { get; set; } 
    public string orderDate { get; set; } 
    public string deliveryNumber { get; set; } 
    public string devices { get; set; } 
    public string transactionId { get; set; } 
    public string shipDate { get; set; } 
} 

, was Sie veröffentlichen ist ein json Objekt Vertre Tation und keine Zeichenfolge und die WCF Runtime wird erwartet, den Inhalt zu seinem äquivalenten, stark typisierten Objekt auf dem Server zu deserialisieren.

0

Ich glaube, Sie RequestFormat und Response von Operation

+0

ya Ich habe das versucht, aber ich bekomme diesen Fehler: Der Server hat einen Fehler bei der Verarbeitung der Anfrage festgestellt. Die Ausnahmebedingungsnachricht lautet 'Es ist ein Fehler beim Deserialisieren des Objekts vom Typ System.String aufgetreten. Endelement 'root' vom Namespace '' erwartet. Gefundenes Element 'customerId' aus dem Namespace ''. '. –

+0

versuchen, die zurückgegebenen Daten als JSON String zu formatieren. –

+0

Gefällt mir: var text = '{"mitarbeiter": [' + '{"firstName": "John", "lastName": "Doe"},' + '{"firstName": "Anna", "lastName": "Smith"}, '+ ' {"firstName": "Peter", "lastName": "Jones"}]} '; –