は私の簡単なC#のコードです:キリルPOSTヘッダーの値
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
namespace Test
{
class Program
{
static void Main(string[] args)
{
WebRequest req = WebRequest.Create("http://192.168.1.35:8888/");
req.Method = "POST";
req.ContentLength = 0;
req.Headers.Add("s", "АБВ12");
req.Headers.Add("username", "user");
req.Headers.Add("password", "pass");
System.Net.WebResponse resp = req.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
Console.WriteLine(sr.ReadToEnd());
}
}
}
だから、私はApacheサーバにPOSTリクエストを送信し、サーバーの応答を取得しようとしています。私は追加の要請者を必要としません。私はISO-8859-1エンコーディングにヘッダ値を変換する必要があるように思え
System.ArgumentException was unhandled
Message=Specified value has invalid Control characters.
Parameter name: value
Source=System
ParamName=value
StackTrace:
at System.Net.WebHeaderCollection.CheckBadChars(String name, Boolean isHeaderValue)
at System.Net.WebHeaderCollection.Add(String name, String value)
at Test.Program.Main(String[] args) in D:\Test\Test\Test\Program.cs:line 17
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
:問題は、私は、私は例外だこのコードを実行しようとしています。だから、どうやってこのプログラムを正しく動かすことができますか?私の英語のために申し訳ありません。私はあなたの助けを願っています。 ありがとうございます!
私の状況で正常に動作するサンプル要求:
POST/HTTP/1.1 s: АБВ12 username: user password: pass Content-Length: 0 Accept: */* User-Agent: Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5) Host: 127.0.0.1 Connection: Keep-Alive
UPD 私は相互運用コンポーネントWinHttpRequestを使用することで、この問題を解決しました:
WinHttp.WinHttpRequest oHTTP = new WinHttp.WinHttpRequest();
oHTTP.Open("POST", "http://127.0.0.1:8888/");
oHTTP.SetRequestHeader("s", args[0]);
oHTTP.SetRequestHeader("username", "user");
oHTTP.SetRequestHeader("password", "pass");
oHTTP.Send();
引数を[0]にはキリル文字が含まれています。みんな、ありがとう!
返信いただきありがとうございます。申し訳ありませんが、私はサーバー側を制御できないと書いていませんでした(私はローカルアドレスを書きました)。問題は、あなたのコードは動作しませんが、それは素敵な試みです。リクエストはサーバーに送信されましたが、 "認識されませんでした"のため、DBの 's'ヘッダー値の値を検索しようとしました。私はVisual FoxProでそのWebサーバーで正常に動作するプログラムを持っています(私の質問更新の適切なリクエストサンプルを参照)。 これは、特定のcrarctersetを使用してサーバーに送信しているようです。 – kseen