次のコードを使用してHTTPPOSTを実行するC#コンソールアプリ(.NET 2.0フレームワーク)があります。
StringBuilder postData = new StringBuilder(100);
postData.Append("post.php?");
postData.Append("Key1=");
postData.Append(val1);
postData.Append("&Key2=");
postData.Append(val2);
byte[] dataArray = Encoding.UTF8.GetBytes(postData.ToString());
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("http://example.com/");
httpRequest.Method = "POST";
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.ContentLength = dataArray.Length;
Stream requestStream = httpRequest.GetRequestStream();
requestStream.Write(dataArray, 0, dataArray.Length);
requestStream.Flush();
requestStream.Close();
HttpWebResponse webResponse = (HttpWebResponse)httpRequest.GetResponse();
if (httpRequest.HaveResponse == true) {
Stream responseStream = webResponse.GetResponseStream();
StreamReader responseReader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
String responseString = responseReader.ReadToEnd();
}
これからの出力は次のとおりです
。webResponse.ContentLength=
-1webResponse.ContentType = text
/htmlwebResponse.ContentEncodingは空白です
responseStringは、タイトルと本文を含むHTMLです。
ただし、同じURLをブラウザ(http://example.com/post.php?Key1=some_value&Key2=some_other_value)に投稿すると、次のような小さなXMLスニペットが表示されます。
<?xml version="1.0" ?>
<RESPONSE RESULT="SUCCESS"/>
アプリケーションと同じHTMLはありません。なぜ応答がそんなに違うのですか?HTMLで取得していない返された結果を解析する必要があります。アプリケーションでの投稿方法を変更する必要がありますか?投稿を受け入れるサーバー側のコードを制御できません。