繁体   English   中英

Dart:我无法使用HttpRequest.send()方法在HTTP消息正文中发布数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM