1

在我的 Rest 服务器中,当调用来自用 Dart 编写的脚本时,我无法读取 HTTP 消息正文中包含的数据。

用ajax调用同一个webservice时,是没有问题的。在这两种情况下,通过 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);

谢谢你的帮助,对不起我的英语不好

4

1 回答 1

1

(从问题移动:)

问题是传递给的数据的格式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
于 2014-09-14T15:00:57.233 回答