Codenameone 代码名1-对RESTfull服务器的简单请求
我与Postman一起测试,如果我向Codenameone 代码名1-对RESTfull服务器的简单请求,codenameone,Codenameone,我与Postman一起测试,如果我向http://localhost:8080/app标题为Content Type=application/json,正文为{“appName”:“Fake app(用于测试)”}。此调用的响应是一个简单的随机字符串,状态为“200OK”。我试图用Codename One复制相同的请求,但没有成功,我得到一个对话框错误,文本为400:null。以下代码中有什么错误 public static void registerApp() { Connec
http://localhost:8080/app
标题为Content Type=application/json
,正文为{“appName”:“Fake app(用于测试)”}
。此调用的响应是一个简单的随机字符串,状态为“200OK”。我试图用Codename One复制相同的请求,但没有成功,我得到一个对话框错误,文本为400:null
。以下代码中有什么错误
public static void registerApp() {
ConnectionRequest request = new ConnectionRequest();
request.setContentType("application/json");
request.setUrl("http://localhost:8080/app");
request.setHttpMethod("PUT");
String appName = Display.getInstance().getProperty("AppName", "");
request.addArgument("appName", appName);
request.addResponseListener((e) -> {
Log.p("App registered");
});
// request will be handled asynchronously
NetworkManager.getInstance().addToQueue(request);
}
我还需要对服务器返回的随机字符串执行一些操作(如果成功),但我不知道如何获取该字符串
addArgument
使用表单提交中使用的标准HTTP参数,而不是JSON参数,因此您得到的(可以在网络监视器工具中看到)是正文中的appName=appName
您可以使用:
request.setRequestBody("{\"appName\": \"Fake app (for testing)\"}");
或者更简单地说:
request.setRequestBody("{'appName': 'Fake app (for testing)'}");
就个人而言,我一直倾向于新的Rest
API,您可以这样使用它:
Response<String> result =
Rest.put(url).
jsonContent().
body("{'appName': 'Fake app (for testing)'}").getAsString();
响应结果=
Rest.put(url)。
jsonContent()。
正文(“{'appName':'Fake app(用于测试)}”).getAsString();
参见谢谢,我按照你的建议与其他同学一起解决了问题。请注意,我不能使用像在
“{'appName':
中那样的单引号,因为我得到了错误:{“status”:400,“error:“Bad Request”,“exception:”org.springframework.http.converter.httpmessagenetradableexception”,“message:”JSON解析错误:意外字符(“”(代码39)):应以双引号开始字段名;嵌套异常为com.fasterxml.jackson.core.JsonParseException:意外字符(“”(代码39)):应以双引号开始字段名}