retrofit需要了解的请点击这里,http不了解请自行百度,接下来直奔主题。(例子参考retrofit 官网)
第一个例子
@GET("users/list")
SpringMVC是这样接收的,(请忽略那些参数,返回值,)
@RestController
@RequestMapping("/users")
public class Fcontroller {
@RequestMapping(value = "/list" ,method = RequestMethod.GET)
public String test(HttpServletRequest request, HttpServletResponse response){//接收参数看实际情况
return "{\"result\":\"ok\"}";//不要在意返回值
}
}
第二个例子(GET取参)
@GET("users/list?sort=desc")
SpringMVC是这样接收的,(请忽略那些参数,返回值,当required为true时,表示该参数必填)
@RestController
@RequestMapping("/users")
public class Fcontroller {
//直接在方法体中指定参数(接收参数的变量名与请求参数名保持一致 sort = sort )
@RequestMapping(value ="/list",method = RequestMethod.GET)
public String test(String sort) {
return "{\"result\":\"ok\"}";
}
//直接在方法体中指定参数(接收参数的变量名与请求参数名保持一致name= sort = sort )
@RequestMapping(value ="/list",method = RequestMethod.GET)
public String test1(@RequestParam(name = "sort", required = true) String id) {
return "{\"result\":\"ok\"}";
}
//直接在HttpServletRequest获取参数( 这个是重点 )
@RequestMapping(value ="/list",method = RequestMethod.GET)
public String test2(HttpServletRequest request) {
String s= Integer.parseInt(request.getParameter("sort"));//获取参数
return "{\"result\":\"ok\"}";
}
}
第三个例子(路径参数)
@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId);
SpringMVC的PathVariable是这样接收的,(请忽略那些参数,返回值,)
@RestController
@RequestMapping("/group")
public class Fcontroller {
@RequestMapping(value = "/{id}/users" ,method = RequestMethod.GET)
public String test(@PathVariable(name = "id", required = true) Integer id){//接收参数看实际情况
return "{\"result\":\"ok\"}";//不要在意返回值
}
}
第四个例子(额,来了个胖点的要不先饿几天)
@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options);
SpringMVC是这样接收的,(1.拿到路径参数,2.参照例2获取map参数,请忽略那些参数,返回值,)
@RestController
@RequestMapping("/group")
public class Fcontroller {
@RequestMapping(value = "/{id}/users" ,method = RequestMethod.GET)
//接收参数看实际情况
public String test(@PathVariable(name = "id", required = true) Integer id,HttpServletRequest request){
//request.getParameter("*"),当然会和后台提前定义好接收参数的key。
return "{\"result\":\"ok\"}";//不要在意返回值
}
}
第五个例子到post了
以下4点是使用post方式提交请求数据时必须满足的先决条件(感觉啥都没弄错,服务端就是收不到参数的看看这里):
1. HTTP请求或者是HTTPS请求。
2. HTTP的请求方法为POST方式。
3. 内容类型是application/x-www-form-urlencoded。
4. servlet已经在请求对象上初始化调用了getParameter方法。
若不满足上述条件,post提交的表单数据不会包含在参数集中,但post的数据本身仍然可以通过请求对象的输入流进行访问。若满足上述条件,post提交的表单数据就不能再通过请求对象的输入流进行直接访问了。(重要注意:若"Content-Type"="application/application/json",只适用get ;若"Content-Type"="application/x-www-form-urlencoded",post get都可以。
)
@POST("users/new")
Call<User> createUser(@Body User user);
SpringMVC是这样接收的,(请忽略那些参数,返回值,)
@RestController
@RequestMapping("/users")
public class Fcontroller {
@RequestMapping(value = "/new" ,method = RequestMethod.POST)
public String test(HttpServletRequest request, HttpServletResponse response){//接收参数看实际情况
return "{\"result\":\"ok\"}";//不要在意返回值
}
}