2013-03-07 55 views
0

在我的情況我的API處理JSON閱讀它作爲郵政JSON數據作爲的WebRequest的查詢字符串

if (context.Request.Files.Count > 0) 
     { 
      jsonData = context.Request.Params["key"]; 
     } 

從我的應用程序如何可以發送一個網絡請求,這個API沒有JSON作爲查詢字符串參數。正弦Json是冗長的,我知道查詢字符串是有限的。

對於android的ios這個api工作正常。

我試圖將它添加到標題。但徒勞無益。

我該如何添加它,以便「jsonData = context.Request.Params [」key「];」將得到我的json。 我的請求格式在這裏。

  urlS="http://abc.ashx?Key="+jsonRequestS; 
      string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x"); 
      var webRequest1 = (HttpWebRequest)WebRequest.Create(urlS); 
      webRequest1.Method = "POST"; 
      webRequest1.KeepAlive = false; 
      webRequest1.ContentType =string.Format("multipart/form-data; boundary={0}", boundary);//     
      Stream postDataStream1 = handler.GetPostStream(boundary,jsonRequestS);    // Writes boundary and files to memory stream. 

      webRequest1.ContentLength = postDataStream1.Length; 
      Stream reqStream1 = webRequest1.GetRequestStream(); 

      postDataStream1.Position = 0; 

      var bufferBytes = new byte[postDataStream1.Length]; 
      postDataStream1.Read(bufferBytes, 0, bufferBytes.Length); 
      reqStream1.Write(bufferBytes, 0, bufferBytes.Length); 

      postDataStream1.Close(); 
      reqStream1.Close(); 

      var sReader = new StreamReader(webRequest1.GetResponse().GetResponseStream());//here Am getting the error. 
      string resultS = sReader.ReadToEnd(); 

在此先感謝。

+0

你能提供一個例子,聲明要求你會喜歡用?你說你不想把json放在查詢字符串中,那麼你說你想從查詢字符串中讀取json。 – 2013-03-07 14:19:32

+0

「jsonData = context.Request.Params [」key「];這是聲明在那裏讀取我的Json數據..我想知道如何發送json到API,以便API可以讀取它。但是作爲Qry字符串,我可以發送一個冗長的Json,所以我應該使用哪種方法。 – 2013-03-08 04:08:07

回答

0

感謝您的回覆。 我找到了解決這個問題的方法。

寫的Json對標題的請求流爲

postDataStream.Write(boundarybytes, 0, boundarybytes.Length); 
      string header = string.Format("Content-Disposition: form-data; name=\"Key\"\r\n\r\n"); 
      headerbytes = Encoding.Default.GetBytes(header); 
      postDataStream.Write(headerbytes, 0, headerbytes.Length); 
      headerbytes = Encoding.Default.GetBytes(jsonRequestS);//writing json request. 
      postDataStream.Write(headerbytes, 0, headerbytes.Length); 

,並在服務器端將是精細讀中

jsonData = context.Request.Params["key"];