2011-05-12 28 views
0

我正在使用Rest API更新force.com上的db表。我發佈json數據來更新數據庫表這樣的。使用WebRequest從WP7 POST Rest ji和Rest APi

 // preparing webrequest 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 

     // adding request headers 
     request.ContentType = "application/json"; 
     request.Headers["Authorization"] = "OAuth " + token; 
     request.Headers["X-PrettyPrint"] = "1"; 
     // request method 
     request.Method = "PATCH"; 
     // start the asynchronous operation 
       request.BeginGetRequestStream(new AsyncCallback(SaveBeginGetRequestStreamCallBack), request); 


private void SaveBeginGetRequestStreamCallBack(IAsyncResult ar) 
     { 

      HttpWebRequest webRequest = (HttpWebRequest)ar.AsyncState; 

      Stream postStream = webRequest.EndGetRequestStream(ar); 

      (using (StreamWriter sw = new StreamWriter(postStream)) 
      { 
       sw.Write(postData); 
       // postData is in json format like: {"Name":"Michel"} 
      } 

      postStream.close(); 
      webRequest.BeginGetResponse(new AsyncCallback(SaveBeginGetResponseCallback), webRequest); 
     } 

     private void SaveBeginGetResponseCallback(IAsyncResult ar) 
     { 

      try 
      { 
       HttpWebRequest webRequest = (HttpWebRequest)ar.AsyncState; 
       HttpWebResponse response; 

       // End the get response operation 
       response = (HttpWebResponse)webRequest.EndGetResponse(ar); 
       Stream streamResponse = response.GetResponseStream(); 
       StreamReader streamReader = new StreamReader(streamResponse); 
       string Response = streamReader.ReadToEnd(); 
       streamResponse.Close(); 
       streamReader.Close(); 
       response.Close(); 

      } 
      catch (WebException e) 
      { 
       MessageBox.Show(e.Message); 
       // Error treatment 

      } 

但它顯示錯誤的請求錯誤。這是通過http請求發送json格式的正確方法嗎?

回答

1

你是不是調用BeginGetResponse關閉/處置的postStream之前...

此外,調用

sw.Write(data); 

由於數據是一個字符串。你的調用(傳遞一個偏移量和一個計數)適合於一個字節數組。您實際上正在調用格式過載http://msdn.microsoft.com/en-us/library/fd857wct(v=VS.96).aspx

+0

感謝您的回覆。我按照你的建議進行了修改,但仍顯示相同的錯誤。 – 2011-05-12 14:02:32

+0

您確定您要發送有效的服務器將理解的JSON嗎? – Damian 2011-05-12 14:33:23

+0

我正在使用此代碼來創建JSON StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); JsonWriter jsonWriter = new JsonTextWriter(sw); jsonWriter.Formatting = Formatting.Indented; jsonWriter.WritePropertyName(「Name」); jsonWriter.WriteValue(「Zeeshan」);並將sw作爲JSON – 2011-05-12 14:45:46