【问题标题】:Http Post request Without encoding parameters in C# Windows phone 8.1C# Windows phone 8.1 中没有编码参数的 Http Post 请求
【发布时间】:2016-02-25 14:10:45
【问题描述】:

我已使用逗号分隔值进行了发布请求。但是我的表单内容发生了变化,并且“,”替换为“%2C”。所以请求不会在服务器端收到。

我只想将“%2C”替换为“,”。

我尝试了不同的代码,但该代码用于字符串。

   //Uri.EscapeDataString(formContent).Replace("%2C", ",");

上面一行是字符串,但我需要同样的 FormContent。

这是我的代码。

         Windows.Web.Http.HttpClient clientOb = new Windows.Web.Http.HttpClient();
         Uri connectionUrl = new Uri("http://www.helloworld.com/istar/fileupload/Lip?");

        string framURL = UTCdatetime + "," + lng + "," + lat + "," + speed  + alt + "," + "," + battery_level + "," + accuracy;





        Dictionary<string, string> pairs = new Dictionary<string, string>();
        pairs.Add("name", Image_file_name);
        pairs.Add("frame", framURL);

       //Here is My Content Form. 
       Windows.Web.Http.HttpFormUrlEncodedContent formContent = new Windows.Web.Http.HttpFormUrlEncodedContent(pairs);

我正在对 FormContent 进行编码。喜欢

  {name=WP_20160224_002.jpg&frame=927858b101b71083f37549517819d6ac%2C20160225125928%2C%2C%2C%2C%2C%2C%2C100%2C%2C2%2C%2C%2C0}

我需要使用逗号发送请求,所以我想删除“%2C”。请帮助解决这个问题。

我需要像这样的上述内容形式...

   {name=WP_20160224_002.jpg&frame=927858b101b71083f37549517819d6ac,20160225092908,74.253794,31.471193,-1,-1,0,,100,103,2,-1,0}

我在这里发送帖子请求。

    Windows.Web.Http.HttpResponseMessage response = await clientOb.PostAsync(connectionUrl, formContent);

【问题讨论】:

    标签: c# .net post windows-phone-8.1


    【解决方案1】:

    您将表单编码与 URL 编码混淆了。鉴于您的示例,几乎不需要对此查询字符串进行编码。表单和查询字符串具有相似的key=value 语法,但格式有所不同。

    你使用 Uri 类是对的——但你可以等到最后从字符串构造它,因为这将确保给定的字符串被完全清理——请参阅MSDN documentation of Uri class 的备注部分。

    这是一个未经测试的例子:

    string framURL = UTCdatetime + "," + lng + "," + lat + "," + speed  + alt + "," + "," + battery_level + "," + accuracy;
    Dictionary<string, string> pairs = new Dictionary<string, string>();
    pairs.Add("name", Image_file_name);
    pairs.Add("frame", framURL);
    var queryString = String.Join("&", pairs.Select(kvp => kvp.Key + "=" + kvp.Value));
    Uri connectionUrl = new Uri("http://www.helloworld.com/istar/fileupload/Lip?" + queryString);
    

    让我知道你过得怎么样!

    【讨论】:

    • 我在 connectionUrl 中得到了准确的 url .. 现在需要发布这个 url.. Windows.Web.Http.HttpResponseMessage response = await clientOb.PostAsync(connectionUrl, formContent);此方法总是采用表单类型和 url 类型的 2 个参数...
    • 等一下,您一开始是在尝试编写表单主体吗?端点期望什么?这些数据应该在查询字符串中传递还是作为表单内容传递?
    • Windows.Web.Http.HttpResponseMessage 响应 = 等待 clientOb.PostAsync(connectionUrl, formContent);这个字符串在服务器上发送数据。但是我必须用这个发送表单内容......而我有完整的URI字符串......
    • 您打算在表单内容中发送什么?你打算在查询字符串中发送什么?你的解释令人困惑。
    猜你喜欢
    • 1970-01-01
    • 2016-08-03
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    相关资源
    最近更新 更多