5

ネットワーク外の URL にいくつかのパラメーターを POST する必要があり、反対側の開発者から、HTTP パラメーターを使用しないように求められました。代わりに、キー値をHTTP ヘッダーに投稿する必要があります。

事実、私はそれらが何を意味するのか本当に理解していません.XmlHttpオブジェクトを使用してajaxのような投稿を使用しようとしました.また、ヘッダーに次のようなものを書き込もうとしました.

Request.Headers.Add(key,value);

しかし、私はできません(フレームワークからの例外)。のような Response オブジェクトを使用して、逆の方法で試しました

Response.AppendHeader("key", "value");

ページにリダイレクトします...しかし、これも機能しません。

私が行き詰まっているのは明らかだと思います。何か助けはありますか?


編集私の環境はWinサーバー2003上の.Net 2.0、c#であることを忘れていました。私が得た例外は

System.PlatformNotSupportedException was unhandled by user code
  Message="Operation is not supported on this platform."
  Source="System.Web"

これは、私の仮の Request.Add が原因のようです。MS は 1 年前にこれを許可しないセキュリティ修正をいくつか公開しました。

4

9 に答える 9

3

WebClient クラスを試しましたか? 例は次のようになります。

        WebClient client = new WebClient();
        NameValueCollection data = new NameValueCollection();
        data["var1"] = "var1";
        client.UploadValues("http://somewhere.com/api", "POST", data);
于 2008-09-02T20:15:33.260 に答える
1

HttpWebRequest を見てください。HttpWebRequest.Method = "POST" を使用して、問題の URL へのリクエストを作成できるはずです。

于 2008-09-02T20:13:56.120 に答える
1

@lassevk が言ったように、リダイレクトは機能しません。

ページまたはアプリケーションから HTTP POST を実行するには、WebRequest クラスを使用する必要があります。ここに例があります。

于 2008-09-02T20:14:11.157 に答える
0

私が昨日直面した例外は、すでに作成されたページのヘッダーに書き込もうとした愚かな試みが原因でした。

ここに示されている方法の1つに従ってリクエストを作成し始めたとき、ヘッダーを書くことができました。

ここでは、@ sectreanで示されているサンプルのように、WebRequestオブジェクトを使用しています

みなさん、どうもありがとうございました。StackOverflowロック:-)

于 2008-09-03T14:44:47.430 に答える
0

XmlHttpRequest オプションを使用して 2 つのサンプル ページを使用してシナリオをテストしました。カスタム ヘッダーは、XmlHttpRequest を使用して、投稿先の aspx ページで使用できます。

次の 2 ページを作成します。aspx ページがソリューション内にあることを確認してください。これにより、デバッガーで を実行し、ブレーク ポイントを設定して、Request.Header コレクションを検査できます。

<html>

<頭>

&lt; script language="javascript"&gt;

function SendRequest()
{
    var r = new XMLHttpRequest();
    r.open('get', 'http://localhost/TestSite/CheckHeader.aspx');
    r.setRequestHeader('X-Test', 'one');
    r.setRequestHeader('X-Test', 'two');
    r.send(null);

}
&lt; script / &gt;

</head> <body> <form> <input type="button" value="Click Me" OnClick="SendRequest();" /> </form> </body> </html>


CheckHeader.aspx

システムを使用して;

System.Web の使用;

System.Web.UI の使用;

パブリック部分クラス CheckHeader : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)
{
    string value = string.Empty;
    foreach (string key in Request.Headers)
        value = Request.Headers[key].ToString();
}

}

男..このhtmlエディタはひどい..または私はそれを使用する方法を知りません...

于 2008-09-02T21:37:46.510 に答える
0

より多くの情報を投稿する必要があります。

たとえば、これは C# ですか? みたいですが、間違っているかもしれません。

また、例外が発生したとのことですが、例外の種類とメッセージは何ですか?

いずれにせよ、POST 用のページにリダイレクトすることはできません。サーバー リダイレクトからではなく、ブラウザーから送信する必要があるため、これを自動化したい場合は、HTML ページを生成する必要があると思います。いくつかの非表示の入力フィールドを含むフォームタグを作成し、javascript で送信します。

于 2008-09-02T20:06:19.740 に答える
0

URL パラメーター (GET) を使用してほしくないという意味だと思います。http ヘッダーを使用すると、実際には POST を介したクエリではなくなります。

于 2008-09-02T20:10:06.847 に答える
0

どの言語/フレームワーク?

Python と httplib2 を使用すると、次のようなことができるはずです。

http = httplib2.Http()
http.request(url, 'POST', headers={'key': 'value'}, body=urllib.urlencode(''))
于 2008-09-02T20:10:10.963 に答える
0

Request オブジェクトは、特定の一連の定義済みヘッダーのみを受け入れると思います。

サポートされているすべての HTTP ヘッダーを一覧表示する列挙もあります。

でも今は思い出せない…後で調べてみる…

于 2008-09-02T20:13:17.743 に答える