このメソッドGeckoWebBrowser.Navigate()
は、そのパラメーターをnsIWebNavigation
インスタンスに渡します。インスタンスXPCOM
は、ブラウザーインスタンスを実行するためのインターフェイスであり、この場合XULRunner 1.8
は(かなり古い)を使用します。
残念ながら、のNavigate()
メソッドは;GeckoWebBrowser
の過負荷を提供しません。postData
それは単にIntptr.Zero
その引数を渡します。
テストすることはできませんが、で次のような新しいメソッドを作成するGeckoWebBrowser.cs
と、投稿データを含む文字列を使用して呼び出すことができます。
public bool Navigate(string url, string postData, GeckoLoadFlags loadFlags)
{
if (url == null)
{
throw new ArgumentNullException("url");
}
if (!IsHandleCreated)
{
throw new InvalidOperationException("Cannot call Navigate() before the window handle is created.");
}
if (IsBusy)
{
this.Stop();
}
return WebNav.LoadURI(url, (uint)loadFlags, null, GetStreamFromString(postData), IntPtr.Zero) == 0;
}
public static Stream??? CreateStreamFromString(string input)
{
return new StreamReader???(input);
}
LoadURI
メソッドがパラメータを受け入れることに注意してくださいnsIInputStream
。これは私にはわかりません。パラメータタイプとそれをインスタンス化する方法を見つけてCreateStreamFromString()
、正しいタイプを返し、インスタンス化するようにメソッドを修正してください。
パラメータのドキュメントも確認してください。postData
URIがHTTPリクエストに対応している場合、このストリームはHTTPリクエストヘッダーに直接追加されます。追加のHTTPヘッダーをプレフィックスとして付けることができます。このストリームには、HTTPヘッダーをHTTPリクエスト本文から分離する\ r\nシーケンスが含まれている必要があります。このパラメーターはnullである可能性があります。
ただし、データを特定のURLに投稿するためだけに使用する場合は、WebClient
またはHttpClient
(.NET 4.5のみ)クラスを使用することをお勧めします。