在我的Rest服务器中,当用Dart编写脚本调用comme时,我无法读取HTTP消息正文中包含的数据。
当使用ajax调用相同的Web服务时,没有问题。在两种情况下,都可以在服务器端读取通过URL(pcParamUrl = yopla)发送的数据。
我认为问题来自于ajax中的“processData:false”,我不知道如何在HttpRequest Dart对象中设置此键。
我正在尝试转换此 ajax 调用(javascript):
var url = "http://127.0.0.1:8980/TestDartService/rest/TestDartService/Test?pcParamUrl=yopla";
$.ajax({url: url,
type: "POST",
processData: false,
contentType: "application/json",
data: JSON.stringify({ request: {pcParamBody: "yepYep"} }),
success: function(data, status) { alert(data.response.pcRetour); },
error: function(status) { alert("erreur"); }
});
使用Dart进行此操作:
HttpRequest request = new HttpRequest();
request.onReadyStateChange.listen((_) {
if (request.readyState == HttpRequest.DONE && request.status == 200 || request.status == 0)) {
print(request.responseText);
}
});
var url = "http://127.0.0.1:8980/TestDartService/rest/TestDartService/Test?pcParamUrl=yopla";
request.open("POST", url, async: false);
request.setRequestHeader("content-Type", "application/json");
String jsonData = JSON.encode('{ request: { pcParamBody: "yepYep" } }'); // etc...
request.send(jsonData);
感谢您的帮助,对不起我的英语不好
最佳答案
(从问题中移出:)
问题是传递给JSON.encode
的数据格式;它应该是一个对象;或者您可以完全跳过编码:
String jsonData = JSON.encode('{request: {pcParamBody: "yepYep"}}'); // BAD
String jsonData = JSON.encode({"request": {"pcParamBody": "yepYep"}}'); // GOOD
String jsonData = '{request: {pcParamBody: "yepYep"}}'; // ALSO GOOD
关于rest - Dart:我无法使用HttpRequest.send()方法在HTTP消息主体中发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892098/