0

私のシナリオでは、APIはjsonを次のように読み取ります。

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

私のアプリケーションから、クエリ文字列パラメーターとしてjsonを使用せずにこのAPIにWebリクエストを送信するにはどうすればよいですか。サイン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();

前もって感謝します。

4

1 に答える 1

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"]; 
于 2013-03-08T06:21:04.000 に答える