在本文中,我们将详细介绍在Volley上进行GET时,如何发送请求标头为“Content-Type”:“application/json”的各个方面,同时,我们也将为您带来关于$.ajax中conte
在本文中,我们将详细介绍在Volley上进行GET时,如何发送请求标头为“ Content-Type”:“ application / json”的各个方面,同时,我们也将为您带来关于$.ajax中contentType: “application/json” 的用法、$.ajax中contentType: “application/json” 的用法详解、@JsonProperty无法用于Content-Type:application / x-www-form-urlencoded、ajax 发送json数据时为什么需要设置contentType: "application/json”的有用知识。
本文目录一览:- 在Volley上进行GET时,如何发送请求标头为“ Content-Type”:“ application / json”
- $.ajax中contentType: “application/json” 的用法
- $.ajax中contentType: “application/json” 的用法详解
- @JsonProperty无法用于Content-Type:application / x-www-form-urlencoded
- ajax 发送json数据时为什么需要设置contentType: "application/json”
在Volley上进行GET时,如何发送请求标头为“ Content-Type”:“ application / json”
我尝试在Volley上使用GET,但我需要向发送请求application/json
。
我查看一些答案,尝试使用jsonBody
,但显示错误:
com.android.volley.ServerError为空
这是我的代码:
public class MainActivity extends AppCompatActivity { String url = "http://114.35.246.42:2212/MobileApp/DEST_WebService.asmx/GetNews"; JSONObject jsonBody; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { //I try to use this for send Header is application/json jsonBody = new JSONObject("{\"type\":\"example\"}"); } catch (JSONException ex) { ex.printStackTrace(); } RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext()); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, jsonBody, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d("TAG", response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } }); mQueue.add(jsonObjectRequest); }}
有谁能教我如何解决这个问题,我们将不胜感激。
这是我的网址: String url ="http://114.35.246.42:2212/MobileApp/DEST_WebService.asmx/GetNews";
答案1
小编典典@Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String, String> params = new HashMap<String, String>(); params.put("Content-Type", "application/json"); return params; }
在您的实施
public class MainActivity extends AppCompatActivity { String url = "http://114.35.246.42:2212/MobileApp/DEST_WebService.asmx/GetNews"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext()); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, jsonBody, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d("TAG", response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } }) { //no semicolon or coma @Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String, String> params = new HashMap<String, String>(); params.put("Content-Type", "application/json"); return params; } }; mQueue.add(jsonObjectRequest); }}
$.ajax中contentType: “application/json” 的用法
https://blog.csdn.net/calyxmelo/article/details/54969244
不使用contentType: “application/json”则data可以是对象 $.ajax({ url: actionurl,type: "POST",datType: "JSON",data: { id: nodeId },async: false,success: function () {} }); 1 2 3 4 5 6 7 8 使用contentType: “application/json”则data只能是json字符串 $.ajax({ url: actionurl,contentType: "application/json" data: "{‘id‘: " + nodeId +"}",success: function () {} });
//请求后端接口,获取数据function getRequestData(method,url,reqData,callBack){ $.ajax({ type : method,url : url,data : JSON.stringify(reqData),contentType:"application/json",dataType:‘json‘,success : function(result) { callBack(result); } });}
$.ajax中contentType: “application/json” 的用法详解
具体内容如下所示:
$.ajax({ type: httpMethod, cache:false, async:false, contentType: "application/json; charset=utf-8", dataType: "json",//返回值类型 url: path+url, data:jsonData, success: function(data){ var resultData = ''返回码=''+data.status+'',响应结果=''+data.message+'',耗时=''+data.tcost; layer.msg(resultData,{icon: 1}); }, error : function(xhr, ts, et) { layer.msg(''服务调用失败!'', {icon: 2}); } });
区分:
contentType: 发送信息至服务器时内容编码类型,简单说告诉服务器请求类型的数据
默认值: "application/x-www-form-urlencoded"
dataType:告诉服务器,我要想什么类型的数据,除了常见的json、XML,还可以指定 html、jsonp、script或者text
不使用contentType: “application/json”则data可以是对象
$.ajax({ url: actionurl, type: "POST", datType: "JSON", data: { id: nodeId }, async: false, success: function () {} });
使用contentType: “application/json”则data只能是json字符串
$.ajax({ url: actionurl, type: "POST", datType: "JSON", contentType: "application/json" data: "{''id'': " + nodeId +"}", async: false, success: function () {} });
总结
以上所述是小编给大家介绍的$.ajax中contentType: “application/json” 的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
- 跨域解决之JSONP和CORS的详细介绍
- JSON生成Form表单的方法示例
- 简单说说angular.json文件的使用
- JavaScript根据json生成html表格的示例代码
- MongoDB使用mongoexport和mongoimport命令,批量导出和导入JSON数据到同一张表的实例
- nodejs读取本地中文json文件出现乱码解决方法
- Go语言的JSON处理详解
- JavaScript JSON使用原理及注意事项
@JsonProperty无法用于Content-Type:application / x-www-form-urlencoded
REST API映射到Java对象时,采用输入内容类型:application / x-www-form-urlencoded
public class MyRequest {
@JsonProperty("my_name")
private String myName;
@JsonProperty("my_phone")
private String myPhone;
//Getters and Setters of myName and myPhone.
}
在表单输入请求中,我正在设置my_name和my_phone的值,但是MyRequest对象带有myName和myPhone作为空值。
我正在使用Jackson批注2.3 jar
有什么建议可能有什么问题吗?
ajax 发送json数据时为什么需要设置contentType: "application/json”
1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别?
contentType: "application/json”,首先明确一点,这也是一种文本类型(和text/json一样),表示json格式的字符串,如果ajax中设置为该类型,则发送的json对象必须要使用JSON.stringify进行序列化成字符串才能和设定的这个类型匹配。同时,对应的后端如果使用了Spring,接收时需要使用@RequestBody来注解,这样才能将发送过来的json字符串解析绑定到对应的 pojo 属性上。另外,需注意一点,json字符串在书写时名称部分需要加上“”双引号,以免一些json解析器无法识别。
如ajax 请求时不设置任何contentType,默认将使用contentType: "application/json”application/x-www-form-urlencoded,这种格式的特点就是,name/value 成为一组,
每组之间用 & 联接,而 name与value 则是使用 = 连接。如: www.baidu.com/query?user=username&pass=password 这是get请求, 而 post 请求则是使用请求体,参数不在 url 中,在请求体中的参数表现形式也是: user=username&pass=password的形式。使用这种contentType时,对于简单的json对象类型,如:{“a”:1,"b":2,"c":3} 这种,将也会被转成user=username&pass=password 这种形式发送到服务端。而服务端接收时就按照正常从from表单中接收参数那样接收即可,不需设置@RequestBody之类的注解。但对于复杂的json 结构数据,这种方式处理起来就相对要困难,服务端解析时也难以解析,所以,就有了application/json 这种类型,这是一种数据格式的申明,明确告诉服务端是什么格式的数据,服务端只需要根据这种格式的特点来解析数据即可。
总结:
1).ajax 如果发送的是json字符串,服务端接收时必须要使用@RequestBody注解。始终记住,json字符串,"application/json”,@RequestBody 这三者之间是一一对应的,要有都有,要没有都没有。
2).如果发送的是json对象,contentType不能设置为"application/json”,需使用默认的类型(application/x-www-form-urlencoded,为什么呢?这种类型最后还是会把json对象类型的参数转为user=username&pass=password这种形式后再发送,需要明白一点:这种转换时只能识别json对象类型,不能识别json字符串类型)。
2.application/x-www-form-urlencoded 和 application/json 两种类型的数据在后端如何接收并解析?
application/x-www-form-urlencoded 这种类型的参数提交方式有get和post两种,这两种方式的区别是前者把编码后的user=username&pass=password这种形式的参数放在url上进行提交,后者是放在请求报文的请求体部分进行发送,只是发送数据时数据放的位置不一样。服务端收到 user=username&pass=password 这种形式的参数后,原生的Servlet使用request.getParameter(“user”)的这种形式即可获取参数,spring mvc 中 框架可自动根据参数名进行匹配,即表单元素的name属性和接收参数的名称一样时即可自动匹配,如果不一样,还可以使用@RequestParam的方式匹配。
application/json 字符串数据原生的Servlet中可以使用request.getParameterMap()来获取,但需注意,这种只能获取Get方式传入的数据。post传入的需要使用输入流的方式来读取。在spring mvc中通过@RequestBody来解析并绑定json字符串参数到方法入参。
补充知识(摘录,博文来源:https://blog.csdn.net/ff906317011/article/details/78552426):
@RequestBody 注解详解
作用:
1) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
2) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
使用时机:
A) GET、POST方式提时, 根据request header Content-Type的值来判断:
1)application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
2)multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
3)其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
B) PUT方式提交时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded, 必须;multipart/form-data, 不能处理;其他格式, 必须.
我们今天的关于在Volley上进行GET时,如何发送请求标头为“ Content-Type”:“ application / json”的分享就到这里,谢谢您的阅读,如果想了解更多关于$.ajax中contentType: “application/json” 的用法、$.ajax中contentType: “application/json” 的用法详解、@JsonProperty无法用于Content-Type:application / x-www-form-urlencoded、ajax 发送json数据时为什么需要设置contentType: "application/json”的相关信息,可以在本站进行搜索。
本文标签: