【问题标题】:Can you pass form variables and a json object at the same time using HttpWebRequest?您可以使用 HttpWebRequest 同时传递表单变量和 json 对象吗?
【发布时间】:2012-04-01 10:31:55
【问题描述】:

我需要将一个 json 字符串和一个表单变量发布到一个 url (https://www.somedomain.com/checkout.jsp)。

我的 json 将包含订单信息(用户电子邮件、送货地址、账单地址、信用卡号等)。除了 json 字符串之外,我还需要传入一个表单变量,例如“bmForm=submit_order_service”。

目前我正在尝试通过 ASP.Net MVC 3 (C#) 中的 HttpWebRequest 对象来执行此操作。

这里是只处理 json 字符串的代码。所以,我的问题是,如何修改此代码以也传递表单变量。

var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.somedomain.com/checkout/checkout.jsp");
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "POST";
httpWebRequest.Accept = "*/*";
httpWebRequest.UserAgent = "SomeUserAgent";

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = sb.ToString();
    streamWriter.Write(json);
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    var responseText = streamReader.ReadToEnd();
}

如果无法使用 HttpWebRequest 完成我的要求,也许有人可以推荐一种替代方法?

【问题讨论】:

    标签: c# asp.net json asp.net-mvc-3 httpwebrequest


    【解决方案1】:

    您可以对表单数据进行 HTML 编码,并将其作为参数附加到 URL:http://www.somedomain.com/checkout/checkout.jsp?param1=value1&param2=value2...。基本上,将表单视为其操作设置为 GET(当然,使用 POST HTTP 动词)。

    【讨论】:

      【解决方案2】:

      如果您想在“后数据”中同时包含 Json 和表单参数,您将不得不对您的 json 进行 urlencode 并将其作为表单参数与其他表单参数一起添加:

      例如

      HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://mysite.com/index.php");
      req.Method = "POST";
      req.ContentType = "application/x-www-form-urlencoded";
      string postData = "json=[yoururlencodedjson]&var2=value2&var3=value3"
      req.ContentLength = postData.Length;
      

      基本上您需要从服务提供商那里了解他们期望的格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 2015-07-06
        相关资源
        最近更新 更多