我发了一个逗号分隔值的帖子请求。但我的表单内容发生了变化,“,”替换为“%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);
答案 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);
让我知道你是怎么过的!