ssh框架调用接口时参数疑惑
本人在调用接口的时候,发现一个问题一个普通的接口被调用的时候String参数为空,转成map类型的就显示正常了!接口如下图
controller
package com.hlmedicals.app.api.controller.location;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@org.springframework.stereotype.Controller
@RequestMapping(value = "/con")
public class Controller {
@RequestMapping(value = "test1")
public void test1(@RequestBody String id){
System.err.println("==========="+id);
}
}
测试类
package com.hlmedicals.app.test.api.location;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.commons.collections.map.HashedMap;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hlmedicals.app.IConst;
import com.hlmedicals.app.api.util.HttpClientUtil;
import com.hlmedicals.app.core.util.SignUtil;
import com.hlmedicals.app.core.vo.JsonRe;
import com.hlmedicals.app.test.IConstTest;
/**
* 根据pid获取地域信息
*/
public class TestLocationController {
final static String urlBase = "http://localhost:9002/his/rest";
public static void main(String[] args) {
HttpClientUtil.token = IConst.TOKEN_DEFAULT;
HttpClientUtil.doctorId = "8a8ab0b246dc81120146dc8181950052";
findUrine();
}
private static void findUrine(){
final Map map = new HashedMap();
map.put("id","211022198908225117");
new Thread(){
public void run() {
String url = urlBase + "/con/test1";
Gson g = new Gson();
String json = g.toJson(map);
System.out.println("====--------====-----===="+json);
String str = HttpClientUtil.post(json, url);
};
}.start();
}
}
打印参数
====--------====-----===={"id":"211022198908225117"}
发送参数的json也看到了 ,{"id":"211022198908225117"},String类型的id为什么不能接收到呢?请大家懂得人为我解惑,谢谢!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
请求中设定contentType为application/json就能接受了,默认是表单模式
使用@RequestParam(value="id")试试,不要用@RequestBody,@RequestBody会将所有post的参数进行POJO映射
另外要看你post的数据格式,如果你post一个json格式对象,那么接收方应当用一个POJO对象映射。
如class Pojo{
String id;
public void setId(String id){
this.id = id;
}
}
@RequsetMapping
public void post(@RequestBody Pojo pojo){
}
String你怎么写的? String str = "211022198908225117"? 还是 String str = "{‘id’:‘211022198908225117’}"?