当前位置: 首页 > 知识库问答 >
问题:

如何使用HTTPclient内容类型=应用程序/x-ows-form-urlencoded进行POST

龙志勇
2023-03-14

我目前正在开发wp8。在应用程序C#中,我通过从textbox创建一个json对象(bm),成功地将json中的POST方法执行到我的api中。短信。下面是我的代码。我该如何使用相同的文本框。文本并以content type=application/x-www-form-urlencoded的形式发布。代码是什么?

Profile bm = new Profile();
bm.first_name = Names.Text;
bm.surname = surname.Text;

string json = JsonConvert.SerializeObject(bm);

MessageDialog messageDialog = new MessageDialog(json);//Text should not be empty 
await messageDialog.ShowAsync();

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");

byte[] messageBytes = Encoding.UTF8.GetBytes(json);
var content = new ByteArrayContent(messageBytes);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = client.PostAsync("myapiurl", content).Result;

共有3个答案

翟默
2023-03-14

对我来说,最好的解决方案是:

// Add key/value
var dict = new Dictionary<string, string>();
dict.Add("Content-Type", "application/x-www-form-urlencoded");

// Execute post method
using (var response = httpClient.PostAsync(path, new FormUrlEncodedContent(dict))){}
柯永福
2023-03-14
 var params= new Dictionary<string, string>();
 var url ="Please enter URLhere"; 
 params.Add("key1", "value1");
 params.Add("key2", "value2");
             
 using (HttpClient client = new HttpClient())
 {
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    HttpResponseMessage response = client.PostAsync(url, new FormUrlEncodedContent(params)).Result;
    var token = response.Content.ReadAsStringAsync().Result;
}
               
//Get response as expected
滕弘新
2023-03-14
var nvc = new List<KeyValuePair<string, string>>();
nvc.Add(new KeyValuePair<string, string>("Input1", "TEST2"));
nvc.Add(new KeyValuePair<string, string>("Input2", "TEST2"));
var client = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(nvc) };
var res = await client.SendAsync(req);

或者

var dict = new Dictionary<string, string>();
dict.Add("Input1", "TEST2");
dict.Add("Input2", "TEST2");
var client = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(dict) };
var res = await client.SendAsync(req);
 类似资料:
  • 我试图访问这个REST API,它接受三个参数:,,我在AngularJS中这样做: 但我总是这样: 对象{data:“{”result:“false”},状态:200,配置:Object,状态文本:“OK”,标题:function} 或者 {"data":"{\"结果\":\"false\"}","状态": 200,"配置":{"方法":"POST","transformRequest":[nu

  • 我的要求很简单。 响应是xml格式的。 我尝试了很多地方的例子,但似乎没有任何效果。它返回401 Unauthorized,如果请求的格式不正确,目标API就会抛出这个错误。

  • 基于用Spring@Controller编码的x-www-form-Url问题的答案 我写了下面的@Controller方法 以下错误导致请求失败 [附言:泽西岛要友好得多,但考虑到这里的实际限制,现在不能使用它]

  • 我有一个api要求在标题中发送以下参数- 内容类型-应用程序/x-www. form-urlencoded AuthKey-(会话令牌) 以及正文中的以下参数(表单日,即键值对) storeId-1 类型-产品 类别ID-324 但是每当我点击这个api,我总是得到401(未授权)错误。我已经尝试使用MultipartRequest正文和formBody,我知道这与正文无关(它的头,我需要发送内容

  • 这是我使用jax rs客户端执行请求的代码: .... 我收到错误: javax。ws。rs.ProcessingException:RESTEASY004655:无法调用请求:javax。ws。rs.ProcessingException:RESTEASY003215:找不到内容类型应用程序/x-www-form-urlencoded-type:javax的编写器。ws。rs.core。类型 这

  • 问题内容: 我有一个项目需要使用Angular2(最终版本)发布到旧的,旧的Tomcat 7服务器,该服务器使用.jsp页面提供某种类似于REST的API。 当项目只是一个执行AJAX请求的简单JQuery应用程序时,此方法就可以很好地工作。但是,该项目的范围已经扩大,因此需要使用更现代的框架来重写它。Angular2看起来很适合这项工作,但有一个例外:它拒绝使用任何选项来执行POST请求,但要使