さて、問題は次のとおりです。オンラインフォームから情報を取得してから、再度送信する必要があります(変更されました)。ページは「windows-1251」にあり、私のリクエストでは次のように取得します。
{
// used to build entire input
StringBuilder sb = new StringBuilder();
// used on each read operation
byte[] buf = new byte[8192];
// prepare the web page we will be asking for
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(url);
// execute the request
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
// we will read data via the response stream
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
// fill the buffer with data
count = resStream.Read(buf, 0, buf.Length);
// make sure we read some data
if (count != 0)
{
// translate from bytes to ASCII text
tempString = Encoding.GetEncoding(1251).GetString(buf, 0, count);
// continue building the string
sb.Append(tempString);
}
}
while (count > 0); // any more data to read?
// print out page source
// Console.WriteLine(sb.ToString());
return sb.ToString();
その後、ページを削除してデータを配列に取得し、再度サイトに投稿する必要がありますが、エンコードする必要があります。System.Net.WebUtility.UrlEncode を使用してエンコードを行いますが、スクリプトと firefox からはまったく異なる結果が得られます (改ざんデータを使用してオリジナルを取得しました)。そのため、どんな助けやアイデアも大歓迎です。ところで、(スクリプトから) エンコードされたデータを取得した後、http://www.url-encode-decode.com/でオンラインで試してみましたが、UTF-8 のみが適切な結果を返しました。だから私はそれを1251に変換しなければならないと推測し、それをやってみましたが、それはまだ意味不明で、本来あるべきものとは完全に異なっていました. )
編集:
Expected: %E3%F0%E0%E4+%D1%EE%F4%E8%FF
Actual: %D0%B3%D1%80%D0%B0%D0%B4+%D0%A1%D0%BE%D1%84%D0%B8%D1%8F
f2[11] = град София
- f2 {string[180]} string[]
[0] "127.0.0.1" string
[1] "1348247257" string
[2] "1n132135075318435" string
[3] "151669n1" string
[4] "0" string
[5] null string
[6] null string
[7] null string
[8] "2" string
[9] "12871449760521116" string
[10] "14" string
[11] "град София" string
[12] "Враждебна" string
[13] "42.707984,23.41341,0~бул. Ботевградско шосе" string
[14] "42.7100653,23.4274006,1" string