Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VisualStudio2012中的HTTPClient帖子_C#_Dotnet Httpclient - Fatal编程技术网

C# VisualStudio2012中的HTTPClient帖子

C# VisualStudio2012中的HTTPClient帖子,c#,dotnet-httpclient,C#,Dotnet Httpclient,我想将数据发布到REST API,但它不会创建正确的请求: using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Accept", "text/csv"); HttpResponseMessage response = null; string baseUrl = ServiceUrl + "/api/v25/upload/test"; Dictionary<string, string>

我想将数据发布到REST API,但它不会创建正确的请求:

using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Accept", "text/csv");
HttpResponseMessage response = null;

string baseUrl = ServiceUrl + "/api/v25/upload/test";

Dictionary<string, string> parameters = new Dictionary<string, string>();

parameters.Add("field1", "value1");
parameters.Add("field2", "value2");

MultipartFormDataContent form = new MultipartFormDataContent();
HttpContent content = new StringContent("long text...");
content.Headers.ContentType = new MediaTypeHeaderValue("text/csv");
HttpContent fields = new FormUrlEncodedContent(parameters);
form.Add(content, "message");
form.Add(fields);

response = client.PostAsync(baseUrl, form).Result;
var message = response.Content.ReadAsStringAsync().Result;
}
使用(var-client=new-HttpClient())
{
client.DefaultRequestHeaders.Add(“接受”、“文本/csv”);
HttpResponseMessage响应=null;
字符串baseUrl=ServiceUrl+“/api/v25/upload/test”;
字典参数=新字典();
参数。添加(“字段1”、“值1”);
参数。添加(“字段2”、“值2”);
MultipartFormDataContent form=新的MultipartFormDataContent();
HttpContent=新的StringContent(“长文本…”);
content.Headers.ContentType=新的MediaTypeHeaderValue(“文本/csv”);
HttpContent字段=新FormUrlEncodedContent(参数);
形式。添加(内容,“信息”);
表单。添加(字段);
response=client.PostAsync(baseUrl,form).Result;
var message=response.Content.ReadAsStringAsync().Result;
}
它使这个URL:

POST/api/v25/upload/test HTTP/1.1

这就是正确的地址:

POST/api/v25/upload/test?字段1=value1和字段2=value2 HTTP/1.1


请问代码中的错误在哪里?

HttpClient没有允许您生成查询字符串的API。有关使用
HttpUtility.ParseQueryString
执行此操作的代码,请参阅

或改用:


为什么您认为将文件添加到表单的帖子会导致将参数添加到URL?只有get使用URL中的字段..是的,我明白了。非常感谢。
var request = new RestRequest("/api/v25/upload/test", Method.POST);
request.AddParameter("field1", "value1", ParameterType.UrlSegment);