私のコードは、PHPスクリプトを介してサーバーに情報を提供する必要があります。C#では、ブラウザを開くことなく、バックグラウンドでURLを開くことは可能ですか?
基本的に私はwww.sitename.com/example.php?var1=1&var2=2&var3=3
に電話したいと思いますが、ブラウザを開きたくないので、Process.Start(URL);
は動作しません。
私はこのサイトに来て、答えを得ないようにしているので、私がこれまでにやったことや、私が得たエラーについて説明します。とにかく解決策が分かっている場合は、次の部分をスキップしてください。
私は周りを見回している、と私はPOSTを使用するためのソリューションを見た:
ASCIIEncoding encoding=new ASCIIEncoding();
string postData="var1=1&var2=2&var3=3";
byte[] data = encoding.GetBytes(postData);
// Prepare web request...
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://localhost/site.php");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();
しかし、私はGET
ないPOST
を使用する必要があります。最初は解決策がmyRequest.Method = "POST";
からGET
に変更される可能性があると思っていましたが、これは動作しませんでした。それはGET
の動作ではなく、URLからデータを引き出します。 (うまくいけば)PHPスクリプトのGET_要求を開始し、その後の人生と思われる、それはURLを呼ぶであろうと、論理の下
HttpwebRequest myRequest= (HttpWebRequest)WebRequest.Create("http://localhost/site.php" + postData);
Stream newStream = myRequest.GetRequestStream();
newStream.Close()
:
だから、私は、前のコードを変更しようとしましたダンディーだろう。ただし、次のエラーが発生しました。
A first chance exception of type 'System.Net.ProtocolViolationException' occurred in System.dll
An unhandled exception of type 'System.Net.ProtocolViolationException' occurred in System.dll
Additional information: Cannot send a content-body with this verb-type.
ご協力いただきありがとうございます。
Visual Studio 2012でエラーが生成され、エラーが表示され、 'Stream newStream = myRequest.GetRequestStream(); ' という2つ目の解決方法が強調表示されます。エラーは発生しませんが、PHPページは何も登録していません。 – echolocation
[fiddler](http://fiddler2.com/)を使用すると、システムプロキシ経由で実行されているコールを確認できます。 – rene
私は問題を発見しました。 'http:// yourserver/site.php'にアクセスするには、中央認証サーバを介して認証が必要です。だから、私がサイトにアクセスしようとすると、まず認証にリダイレクトされます。 私は正しいユーザー名とパスワードを持っているとすれば、それを過ぎるにはどうにか分かりますか?どんな助けでもありがとう – echolocation