0
  • tar-url.com というページがあります。
  • C# 経由で PUT 要求を使用してターゲット ページに ping を実行したい。
  • クライアントに成功またはエラーを返したい。

これは存在し、IE 以外のすべてのクライアントで機能します。

    var xml = "[XMLDOC]";
    $.ajax({
        type: "PUT",
        contentType: "multipart-form",
        url: "tar-url.com",
        headers: {Authorization: "Basic herpderp="},
        data: xml
        success: function(){console.log("success");},
        error: function(){console.log("error");}
    });

これは私が通常行う要求です。それは私の古い形式で動作しますが、1 つのヒッチがあります。IE9 では動作しません。この素晴らしいアイデアを思いつきました。ブラウザではなく、サーバーに実行させます。

呼び出しを実行できる汎用ハンドラー gHand.ashxを作成します。

私は他のいくつかの呼び出しに対してこれを行いますが、JSON を返すのは単純な GET 要求です。ここで助けが必要です。

C# で指定されたメソッドを作成します。

public void ProcessRequest(HttpContext context)
{
    WebClient wsb = new WebClient();
    //pass *tar-url.com here*.
    string url = context.Request.QueryString["url"];
    //pass contentType here.
    string ct = context.Request.QueryString["contextType"];
    string type = context.Request.QueryString["type"];
    string headers = context.Request.QueryString["headers"];
    //not sure how to access the xml?
    // something like this?
    string xml = context.Request.QueryString["save"];

    //HERE I NEED TO ASSIGN REST OF STUFF TO *wsg*

    string response = wsb.DownloadString(url);
    context.Response.Write(response);

}

JavaScriptで呼び出す方法:

$.ajax({
    url:"gHand.ashx",
    type: "get",
    data: JSON.stringify({
        save: xml,
        type: "PUT",
        url: "tar-url.com",
        contentType: "multipart/form",
        headers:{ Authorization: "Basic HerpDerp="}
    }),
    success: function(){...},
    error: function(){...}
});

WebClient を構築して同様のスクリプトを実行できるという意味では、私の呼び出しはすべて正しいように見えますが、この特定の設定が私の頭を悩ませているようです。

編集: 誰か何か考えがありますか?

4

1 に答える 1

0

データをサーバーに送信するときは、データをデコードする必要があります。

例:

次の地図を送信しています:

{
save:xml,
url: url,
type:type,
contenType: ct,
headers:{...}
}

したがって、それを見て、次のように言うことができます。

string url = context.Request.QueryString["url"];

通常どおりに進みます。REQUEST TYPE は、WebClient オブジェクトがどのように反応するかを決定するため、最後に確認する必要があります。

あなたがする代わりに、データが保存されるので

wsb.DownloadString(url);

これは多かれ少なかれ取得要求であり、次のようなことをしたいと思うでしょう:

wsb.uploadString(URL, METHOD, DATA);

XML DOC をプッシュしているため、または:

wsb.uploadData(URL, METHOD, DATA);

画像をアップロードする場合。

ソース: http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

変数を割り当てる順序は関係ありませんが、uploadData を呼び出すと、webclient 要求が実行されます。wsb.execute() コマンドはありません。

于 2013-10-07T12:43:12.263 に答える