【问题标题】:Making an HTTP POST request in as3 AIR在 as3 AIR 中发出 HTTP POST 请求
【发布时间】:2015-04-08 00:14:15
【问题描述】:

我正在尝试通过 as3 AIR for mobile 发出与此 curl 请求等效的 HTTP POST 请求:

curl -d '{"firstname": "John", "lastname": “Doe"}' -H 'Content-Type: application/json' http://eve-demo.herokuapp.com/people

这是我的代码:

var urlVariables:URLVariables = new URLVariables();
urlVariables.firstname = "Jhon";
urlVariables.lastname = "Doe";

var request:URLRequest = new URLRequest();
request.url = "http://eve-demo.herokuapp.com/people";
request.contentType = "multipart/form-data";
request.method = URLRequestMethod.POST;
request.data = urlVariables;

var contentTypeHeader:URLRequestHeader = new URLRequestHeader("Content-Type", "application/json");
var acceptHeader:URLRequestHeader = new URLRequestHeader("Accept", "application/json");
var formDataHeader:URLRequestHeader = new URLRequestHeader("Content-Type", "multipart/form-data");

request.requestHeaders = [acceptHeader, formDataHeader];

postLoader = new URLLoader();
postLoader.dataFormat = URLLoaderDataFormat.BINARY;
postLoader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
postLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
postLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
postLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

try
{
    postLoader.load(request);
}
catch (error:Error)
{
    trace("Unable to load post URL");
}

但我收到以下错误:

[HTTPStatusHandler]: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=400 redirected=false responseURL=null]
[IOErrorHandler]: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://eve-demo.herokuapp.com/people" errorID=2032]

任何人对如何使用“multiform/form-data”(无需上传任何文件)发出 http post 请求有任何建议吗??

谢谢

【问题讨论】:

  • 如果我想上传文件,这可能有效,但如果我只想将这两个变量作为 POST 请求发送呢??
  • 跳过byteArray,它可以为null,或者如果你不需要contentType = "multipart/form-data",你可以也跳过它来设置(默认值为 "application/x-www-form-urlencoded"
  • 现在http状态错误码是422!!!

标签: actionscript-3 air httprequest


【解决方案1】:

URLVariables 旨在与 url 编码的变量一起使用,而不是 JSON。尝试将 data 设置为 JSON 字符串:

var params:Object = { firstname: "John", lastname: "Doe" };
request.data = JSON.stringify(params);

【讨论】:

  • 不,仍然无法正常工作.. 与 HTTP 状态 400 相同的错误
  • 您确定参数对于该 Web 服务有效吗?
  • 是的,服务是python eve框架的demo,你也可以用!!
  • 好的。我问是因为我尝试过,发现如果省略参数,则返回数据。相关文件在哪里?
  • 这里:python-eve.org/features.html 我对这个 REST api 和 HTTP 请求的东西没有多大帮助,因为我是新手..!
猜你喜欢
  • 2017-11-28
  • 2016-09-24
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
相关资源
最近更新 更多