[英]Dart : i can't POST data in HTTP Message Body using HttpRequest.send() method
在我的Rest服务器中,当用Dart编写脚本调用来通讯时,我无法读取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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.