2015-01-26 53 views
0

我正嘗試在JavaScript應用程序與WCF服務之間進行通信。 WCF服務,我創建提供了以下方法:準備Json字符串在WCF服務中傳遞的問題。

[OperationContract] 
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, UriTemplate = "/ExportToXml")] 
    void ExportToXml(List<Span> spans, List<Detection> detections); 

    [DataContract] 
    public class Detection 
    { 
     [DataMember] 
     public int TID { get; set; } 

     [DataMember] 
     public double Longitude { get; set; } 

     [DataMember] 
     public double Latitude { get; set; } 

     [DataMember] 
     public double Height { get; set; } 

     [DataMember] 
     public int SN { get; set; } 

     [DataMember] 
     public string TLine_Name { get; set; } 
    } 

    [DataContract] 
    public class Span 
    { 
     [DataMember] 
     public int SN { get; set; } 

     [DataMember] 
     public double Longitude { get; set; } 

     [DataMember] 
     public double Latitude { get; set; } 

     [DataMember] 
     public string TLine_Name { get; set; } 
    } 

但是,我無法準備JSON通入的JS客戶端此功能。我準備的JSON格式如下:

var input = { 
       "spans": [{ 
        "SN": 1, 
        "Longitude": 1000000, 
        "Latitude": 1000000, 
        "TLine_Name": "Circuit Test 1" 
       }, { 
        "SN": 2, 
        "Longitude": 2000000, 
        "Latitude": 2000000, 
        "TLine_Name": "Circuit Test 2" 
       }], 

       "detections": [{ 
        "TID": 1, 
        "Longitude": 1000000, 
        "Latitude": 1000000, 
        "Height": 15, 
        "SN": 1, 
        "TLine_Name": "Circuit Test 1" 
       }, { 
        "TID": 2, 
        "Longitude": 1000000, 
        "Latitude": 1000000, 
        "Height": 12, 
        "SN": 1, 
        "TLine_Name": "Circuit Test 1" 
       }, { 
        "TID": 3, 
        "Longitude": 1000000, 
        "Latitude": 1000000, 
        "Height": 14, 
        "SN": 1, 
        "TLine_Name": "Circuit Test 1" 
       }, { 
        "TID": 4, 
        "Longitude": 1000000, 
        "Latitude": 1000000, 
        "Height": 10, 
        "SN": 2, 
        "TLine_Name": "Circuit Test 2" 
       }, { 
        "TID": 5, 
        "Longitude": 1000000, 
        "Latitude": 1000000, 
        "Height": 8, 
        "SN": 2, 
        "TLine_Name": "Circuit Test 2" 
       }] 
      }; 

該服務不喜歡上面的json輸入。對此事的任何幫助非常感謝。

+0

有什麼錯誤? – 2015-01-27 05:33:50

回答

0

我可以將JSON對象發送到在我自己的機器上運行的服務。因此,它不是發送到服務的JSON對象的格式,這是問題。你有另一個問題。有關客戶端的更多細節可能有助於解決問題。

我明白你的客戶是一個JavaScript的應用程序,但這裏是我成功地發送JSON對象到服務C#客戶端:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:9001/WCFServices/RestfulService/ExportToXml"); 
request.ContentType = "text/json"; 
request.Method = "POST"; 
using (var streamWriter = new StreamWriter(request.GetRequestStream())) 
{ 
    string json = @"{ ""spans"": " + 
     @"[{ ""SN"": 1, ""Longitude"": 1000000,""Latitude"": 1000000,""TLine_Name"": ""Circuit Test 1""}, " + 
     @"{""SN"": 2, ""Longitude"": 2000000, ""Latitude"": 2000000, ""TLine_Name"": ""Circuit Test 2"" }]," + 
     @"""detections"": " + 
     @"[{ ""TID"": 1, ""Longitude"": 1000000, ""Latitude"": 1000000, ""Height"": 15,""SN"": 1, ""TLine_Name"": ""Circuit Test 1"" }, " + 
     @"{ ""TID"": 2, ""Longitude"": 1000000, ""Latitude"": 1000000, ""Height"": 12, ""SN"": 1, ""TLine_Name"": ""Circuit Test 1"" }, " + 
     @"{ ""TID"": 3, ""Longitude"": 1000000, ""Latitude"": 1000000, ""Height"": 14, ""SN"": 1, ""TLine_Name"": ""Circuit Test 1"" }, " + 
     @"{ ""TID"": 4, ""Longitude"": 1000000, ""Latitude"": 1000000, ""Height"": 10, ""SN"": 2, ""TLine_Name"": ""Circuit Test 2"" }, " + 
     @"{ ""TID"": 5, ""Longitude"": 1000000, ""Latitude"": 1000000, ""Height"": 8, ""SN"": 1, ""TLine_Name"": ""Circuit Test 2"" }] }"; 
    streamWriter.Write(json); 
} 
WebResponse ws = request.GetResponse(); 
Encoding enc = System.Text.Encoding.GetEncoding(1252); 
StreamReader responseStream = new StreamReader(ws.GetResponseStream()); 
string response = responseStream.ReadToEnd(); 
responseStream.Close();