最近和学长用C#来连接测试java接口,出现了一个问题,弄了很久。
问题:
java接收参数后输出一直为null,或者是没有反应。
最后还是老师给了指导,用@RequestParam
就可以获取到参数,并输出。
@RequestParam
作用:
GET和POST请求传的参数会自动转换赋值到@RequestParam 所注解的变量上
此外,要想给C#端返回一个值,必须加上@ResponseBody
,否则返回的只能是404
@ResponseBody
(需要ResponseBody正常工作,需要导入jackson包。负责将对象转为json字符串)
作用:
0) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
1) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
使用时机:
Java服务端
@Controller
public class testC {
@RequestMapping("/test")
@ResponseBody
public String apt(@RequestParam("opt")String apt){
System.out.println(apt);
return apt;
}
}
C#端(在unity上测试的结果)
//请求
private IEnumerator IPost(WWWForm data, Action<UnityWebRequest> action) {
using (UnityWebRequest request = UnityWebRequest.Post(uriPost, data)) {
yield return request.SendWebRequest();
if (request.isNetworkError || request.isHttpError) {
Debug.Log("Web连接错误:" + request.error);
} else {
action.Invoke(request);
}
}
}
//发送
WWWForm form = new WWWForm();
form.AddField("opt", "li");
_webConnect.Post(form, (request)=> {
print(request.downloadHandler.text);
});