C# 使用WP7中的webReuest使用RESTAPI发布json

C# 使用WP7中的webReuest使用RESTAPI发布json,c#,json,windows-phone-7,force.com,C#,Json,Windows Phone 7,Force.com,我正在使用Rest API更新force.com上的db表。我发布json数据来更新db表,如下所示 // preparing webrequest HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); // adding request headers request.ContentType = "application/json"; request.Head

我正在使用Rest API更新force.com上的db表。我发布json数据来更新db表,如下所示

     // 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格式是否正确。

在调用BeginGetResponse之前,您没有关闭/处理postStream

还有,打电话

sw.Write(data);

因为数据是一个字符串。您的调用(传递偏移量和计数)适用于字节数组。实际上,您正在调用一个格式化重载

,谢谢您的回复。我已经按照u的建议进行了更改,但仍然显示相同的错误。您确定发送的是服务器能够理解的有效JSON吗?我正在使用此代码创建JSON StringBuilder sb=new StringBuilder();StringWriter sw=新的StringWriter(sb);JsonWriter JsonWriter=新的JsonTextWriter(sw);jsonWriter.Formatting=Formatting.Indented;jsonWriter.WritePropertyName(“名称”);jsonWriter.WriteValue(“Zeeshan”);并以json的形式传递sw,或者在发送字符串之前打印出字符串,以验证它是否符合预期。从服务器的角度来看,就json而言,您确定这是一个有效的请求吗?您发送的确切json数据是什么,以及您发送到的URL是什么。此外,错误响应将包含一个json正文,其中包含有关请求失败原因的更多信息