0

奇妙な問題があります。httpwebresquestの応答を受け取ると、htmlテキストの中央にいくつかの数字が表示されます。

例えば:

<input type = "hidden" name = "productid" value = "7220701403

841

89620 ">



その841は表示されるべきではない数値であり、そのため、数行ごとに表示されます。最初から:

c04

<html>

<頭>


したがって、htmlを解析することは不可能です。

UTF8Encoding encoding = new UTF8Encoding();
byte[] bytes = encoding.GetBytes(postDataString);
request.ContentLength = bytes.Length;
request.ContentType = "application/x-www-form-urlencoded";
request.SendChunked = false;

using (Stream writeStream = request.GetRequestStream())
{
    writeStream.Write(bytes, 0, bytes.Length);
}


response = (HttpWebResponse)request.GetResponse();
Stream remoteStream = response.GetResponseStream();
byte[] buffer = new byte[65536];
int bytesRead = 0;

do
{
    bytesRead = remoteStream.Read(buffer, 0, buffer.Length);
    UTF8Encoding enc = new UTF8Encoding();
    responseString += enc.GetString(buffer);

} while (bytesRead > 0);
remoteStream.Close();

HTMLテキストは変数responseStringにあります。

アイデアや提案をありがとう。

4

1 に答える 1

1

まず、サーバーが UTF8 を使用していると仮定します。また、読み取ったバイト数を考慮せず ( bytesRead = remoteStream.Read(buffer, 0, buffer.Length))、バッファ全体を文字列に変換するだけです ( enc.GetString(buffer))。それは次のようなものでなければなりませんenc.GetString(buffer,0,bytesRead)

PS:bytesRead>=0チェックも必要な場合があります

于 2011-10-14T18:36:28.053 に答える