rest - Dart:我无法使用HttpRequest.send()方法在HTTP消息主体中发布数据

标签 rest jquery post httprequest dart

在我的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/

相关文章:

c# - ODATA 从 C# ASP.NET 4.0 消费服务操作

rest - 为什么在隐式授权流程中,授权服务器绝不能发出刷新 token

javascript - 如何在导航到另一个页面后保存文本框值

jquery - 如何使用Thymeleaf获取动态输入框数据?

php - RESTeasy 使用的带有 JSON 正文的 POST - HTTP 100

javascript - 如何确保我的 ajax 调用始终成功?

java - 使用 Principal REST hibernate @OneToOne 映射

java - Jersey 客户端 API 与 Jersey 测试框架

javascript - jquery 成功时赋值

php - 需要帮助来比较 PHP 和 DB 的值(value),$_POST 不起作用..?