Http Post请求在C#Windows phone 8.1中没有编码参数

时间:2016-02-25 14:10:45

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

我发了一个逗号分隔值的帖子请求。但我的表单内容发生了变化,“,”替换为“%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);

1 个答案:

答案 0 :(得分:0)

您将表单编码与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);

让我知道你是怎么过的!