2008-09-02 7 views
5

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

事実が、私は本当に彼らが何を意味するのか理解していないということです:私はXMLHTTPオブジェクトと、AJAXのようなポストを使用しようとしました、とも私は

Request.Headers.Add(key,value); 
ようなもので、ヘッダーに書き込もうとしました

でもできません(フレームワークの例外)。私は

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

ようResponseオブジェクトを使用して、他の方法で回避しようとしたし、その後のページにリダイレクト...しかし、これは同様に、動作しません。

私はそこに何か助けてもらえたのは明らかです。


EDIT私は私が得た例外は、それが私によって引き起こされているようにこれが見えます

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

で勝利サーバー上の2003 、私の環境は.NET 2.0、C#のであることを伝えるのを忘れてRequest.Addに暫定的な1年前に、これを許可しないセキュリティ修正がいくつか公開されました。

答えて

1

@lassevkと同様、リダイレクトは機能しません。

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

0

詳細情報を掲載する必要があります。

たとえば、これはC#ですか?それはそれのように見えますが、私は間違っているかもしれません。

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

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

0

URLパラメータ(GET)を使用したくないと思います。 HTTPヘッダーを使用している場合は、実際にはPOST経由でそれ以上クエリを実行していません。

0

どの言語/フレームワークですか?私はRequestオブジェクトのみが事前に定義されたヘッダの特定のセットを受け入れるだろうと信じてい

http = httplib2.Http() 
http.request(url, 'POST', headers={'key': 'value'}, body=urllib.urlencode('')) 
0

:Pythonとhttplib2を使用して

、あなたのような何かを行うことができるはず。

サポートされているすべてのHTTPヘッダーも列挙されています。

しかし、私は、現時点ではそれを思い出すことができない...私は秒でそれを見ていきます...

1

は、HttpWebRequestのを見てみましょう。 HttpWebRequest.Method = "POST"を使用して、問題のURLへのリクエストを構築できるはずです。

3

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

 WebClient client = new WebClient(); 
     NameValueCollection data = new NameValueCollection(); 
     data["var1"] = "var1"; 
     client.UploadValues("http://somewhere.com/api", "POST", data); 
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; 

< /ヘッド> <体> <形態> <入力タイプ= "ボタン" 値= "クリックミー" クリック時=」 SendRequest(); "/> < /フォーム> < /ボディ> </HTML >


CheckHeader.aspxシステムを使用して

using System.Web;

using 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エディタは..吸うか、私が使用する方法がわかりませんそれ...

0

私が昨日直面していた例外は、私の愚かなことが原因で既に構築されたページのヘッダーに書き込もうとしました。

ここに示されているmothodの1つに続いてリクエストを作成し始めたとき、私はヘッダを書くことができました。

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

ありがとうございます。 StackOverflow rocks :-)

関連する問題