首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Haxe/Neko发送HTTP请求?

如何从Haxe/Neko发送HTTP请求?
EN

Stack Overflow用户
提问于 2014-12-07 17:49:19
回答 2查看 1.6K关注 0票数 6

我有一个运行在NekoVM下的服务器,它提供RESTLike服务。我试图使用以下Haxe代码向此服务器发送PUT/DELETE请求:

代码语言:javascript
复制
static public function main()
{
    var req : Http = new Http("http://localhost:2000/add/2/3");
    var bytesOutput = new haxe.io.BytesOutput();

    req.onData = function (data)
    {
        trace(data);
        trace("onData");
    }

    req.onError = function (err)
    {
        trace(err);
        trace("onError");
    }

    req.onStatus = function(status)
    {
        trace(status);
        trace("onStatus");
        trace (bytesOutput);
    }

    //req.request(true); // For GET and POST method

    req.customRequest( true, bytesOutput , "PUT" );

}

问题是,只有onStatus事件显示了一些内容:

代码语言:javascript
复制
Main.hx:32: 200
Main.hx:33: onStatus
Main.hx:34: { b => { b => #abstract } }

有人能解释我在customRequest上做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-20 12:58:43

customRequest不调用onData

customRequest调用完成后,要么调用onError,要么调用第一个onStatus,然后将响应写入指定的输出。

票数 3
EN

Stack Overflow用户

发布于 2019-02-02 15:25:02

对于那些找到这些答案的人(@锶是正确的),并想知道完成的代码可能是什么样子的:

代码语言:javascript
复制
static public function request(url:String, data:Any) {
    var req:Http = new haxe.Http(url);
    var responseBytes = new haxe.io.BytesOutput();

    // Serialize your data with your prefered method
    req.setPostData(haxe.Json.stringify(data)); 
    req.addHeader("Content-type", "application/json");

    req.onError = function(error:String) {
        throw error;
    };

    // Http#onData() is not called with custom requests like PUT

    req.onStatus = function(status:Int) {
        // For development, you may not need to set Http#onStatus unless you are watching for specific status codes
        trace(status);
    };

    // Http#request is only for POST and GET
    // req.request(true);

    req.customRequest( true, responseBytes, "PUT" );

    // 'responseBytes.getBytes()' must be outside the onStatus function and can only be called once
    var response = responseBytes.getBytes();

    // Deserialize in kind
    return haxe.Json.parse(response.toString());
}

我做了一个要旨

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27345757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档