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");}
    });

这是我通常做的要求。它适用于我的旧格式,但有一个障碍,它在 IE9 中不起作用,所以我想出了这个绝妙的主意;让我的服务器而不是浏览器来做。

我创建了一个通用处理程序: gHand.ashx,它允许我执行我的调用。

我为其他一些调用执行此操作,但它是简单的 GET 请求,它返回一些 JSON。这是我需要帮助的地方。

我创建了 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"];

并正常进行。您的请求类型是您应该检查的最后一件事,因为它决定了您的 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 回答