0

だから私はあなたがいくつかの情報を入力するプログラムを作っています。情報の一部には大量のテキストが必要です。100 文字以上を話しているのです。私が見つけたのは、データが大きすぎると、データがまったく送信されないことです。私が使用しているコードは次のとおりです。

    public void HttpPost(string URI, string Parameters)
    {
        // this is what we are sending
        string post_data = Parameters;

        // this is where we will send it
        string uri = URI;

        // create a request
        HttpWebRequest request = (HttpWebRequest) WebRequest.Create(uri); 
        request.KeepAlive = false;
        request.ProtocolVersion = HttpVersion.Version10;
        request.Method = "POST";

        // turn our request string into a byte stream
        byte[] postBytes = Encoding.ASCII.GetBytes(post_data);

        // this is important - make sure you specify type this way
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = postBytes.Length;
        Stream requestStream = request.GetRequestStream();

        // now send it
        requestStream.Write(postBytes, 0, postBytes.Length);
        requestStream.Close();
    }

次に、そのメソッドを次のように呼び出しています。

 HttpPost(url, "data=" + accum + "&pass=HRS");

「accum」は、送信している大量のデータです。この方法は、少量のデータを送信する場合に機能します。しかし、サイズが大きいと送信されません。100 文字以上のウェブサイトの .php ページに投稿リクエストを送信する方法はありますか?

ありがとう。

4

2 に答える 2

4

呼び出しているだけGetRequestStreamです。それはリクエストを行いません-デフォルトでは、メモリ、IIRCにバッファリングされます。

WebRequest.GetResponse()実際にWebサーバーにリクエストを送信するには、を呼び出す必要があります。

したがって、コードの末尾を次のように変更します。

 // Using statement to auto-close, even if there's an exception
 using (Stream requestStream = request.GetRequestStream())
 {
     requestStream.Write(postBytes, 0, postBytes.Length);
 }

 // Now we're ready to send the data, and ask for a response
 using (WebResponse response = request.GetResponse())
 {
     // Do you really not want to do anything with the response?
 }
于 2012-05-13T07:13:06.823 に答える
0

この方法を使用して、リクエスト内に JSON データを投稿しています。少し違うと思いますが、うまくいくかもしれません。

httpWebRequest = (HttpWebRequest)WebRequest.Create(RequestURL);
httpWebRequest.ContentType = "application/json";
                httpWebRequest.Accept = "application/json";
                httpWebRequest.Method = "POST";
String username = "UserName";
String password = "passw0rd";
String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));
httpWebRequest.Headers.Add("Authorization", "Basic " + encoded);
 using (StreamWriter sw = new StreamWriter(httpWebRequest.GetRequestStream()))
                {
                    string json = "{" +
                                    "\"user\":[ \"" + user + "\"] " +
                                    "}";
                    sw.Write(json);
                    sw.Flush();
                    sw.Close();
                }
using (HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse())
                {


                    //var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                    {
                        var responseText = streamReader.ReadToEnd();
                        //Now you have your response.
                        //or false depending on information in the response
                    }

                    httpResponse.Close();
                }
于 2016-09-09T18:01:08.643 に答える