HttpRequest
C# で s を使用して Web サイトを操作して
います。ページのコンテンツを読み取ることはできますが、サーバーに情報を送信しようとすると、すべてが正しく機能しますがTextArea
、ページ内の s の値についてではありません...
The text I'mそれらを設定しようとしているのは ペルシア語 (ファルシ語) であり、受信しているページはWindows-1256エンコーディング用に設定されています...
textarea
問題は、ペルシア語で期待どおりに コンテンツが表示されないことです!
更新:リクエストを送信するために使用するコードは次のとおりです。
public static string PostMultipart(string URL, List<RequestParameterInfo> parameters, List<string> cookies, string referer, string acceptLanguage, string acceptCharset, object KeepAliveValue)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(URL));
var boundary = "---------------------------7dc283270344";
var messageBytes = Encoding.UTF8.GetBytes("--" + boundary);
foreach (var item in parameters)
{
var prefixBytes = Encoding.UTF8.GetBytes("\n");
var itemBytes = item.ToBytes();
var postfixBytes = Encoding.UTF8.GetBytes("\n--" + boundary);
var startIndex = messageBytes.Length;
Array.Resize<byte>(ref messageBytes, messageBytes.Length + itemBytes.Length + prefixBytes.Length + postfixBytes.Length);
prefixBytes.CopyTo(messageBytes, startIndex);
itemBytes.CopyTo(messageBytes, startIndex + prefixBytes.Length);
postfixBytes.CopyTo(messageBytes, startIndex + prefixBytes.Length + itemBytes.Length);
}
var lastPostfixBytes = Encoding.UTF8.GetBytes("--");
var startIndex2 = messageBytes.Length;
Array.Resize<byte>(ref messageBytes, messageBytes.Length + lastPostfixBytes.Length);
lastPostfixBytes.CopyTo(messageBytes, startIndex2);
request.Headers.Clear();
request.Accept = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*";
request.Headers.Add(HttpRequestHeader.Pragma, "no-cache");
request.ContentLength = messageBytes.Length;
request.Referer = referer;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)";
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Add(HttpRequestHeader.AcceptLanguage, acceptLanguage);
if (!string.IsNullOrWhiteSpace(acceptCharset))
request.Headers.Add(HttpRequestHeader.AcceptCharset, acceptCharset);
if (KeepAliveValue is Boolean)
request.KeepAlive = (bool)KeepAliveValue;
else
request.Headers.Add(HttpRequestHeader.KeepAlive, (string)KeepAliveValue);
request.Expect = null;
request.CookieContainer = new CookieContainer();
foreach (var item in cookies)
request.CookieContainer.SetCookies(new Uri(URL), item);
request.AllowWriteStreamBuffering = true;
request.Method = "POST";
using (var strm = request.GetRequestStream())
{
strm.Write(messageBytes, 0, messageBytes.Length);
}
string resPage = "";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader srResponse = new StreamReader(response.GetResponseStream()))
{
resPage = srResponse.ReadToEnd();
}
}
return resPage;
}