Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Haxe';s http.customRequest而不崩溃?_Haxe - Fatal编程技术网

如何从Haxe';s http.customRequest而不崩溃?

如何从Haxe';s http.customRequest而不崩溃?,haxe,Haxe,预先警告:我对Haxe很陌生 我正在尝试使用http.customRequest(打算稍后发出PUT和DELETE请求)。但是当我尝试访问结果字节时,我得到了C++的分割错误和一个带有java的Null PoExtExchange异常。 我在谷歌上搜索了customRequest的一些其他用途,我所做的似乎没有错,但显然是错的 class Main { static function main() { var req = new haxe.Http("https://ht

预先警告:我对Haxe很陌生

我正在尝试使用http.customRequest(打算稍后发出PUT和DELETE请求)。但是当我尝试访问结果字节时,我得到了C++的分割错误和一个带有java的Null PoExtExchange异常。 我在谷歌上搜索了customRequest的一些其他用途,我所做的似乎没有错,但显然是错的

class Main {
    static function main() {
        var req = new haxe.Http("https://httpbin.org/put");
        var responseBytes = new haxe.io.BytesOutput();

        req.onError = function(err) {
            trace("onError");
            trace(err); // Java says NullPointerException
        };

        req.onStatus = function(status) {
            trace("About to get bytes");

            // Removing these lines prevents the errors
            var b = responseBytes.getBytes();
            trace("Got the bytes");
            trace(b.length); // Shouldn't be empty, but is
        };

        req.customRequest(false, responseBytes, null, "PUT");
    }
}
我已经在当前版本和HEAD(通过Brew)中尝试过这一点

我认为我的命令行非常基本:

$ haxe -cp src -main Main -java bin/java
$ java -jar bin/java/Main.jar
src/Main.hx:12: About to get bytes
src/Main.hx:16: Got the bytes
src/Main.hx:17: 0
src/Main.hx:7: onError
src/Main.hx:8: java.lang.NullPointerException

$ haxe -cp src -main Main -cpp bin/cpp
$ ./bin/cpp/Main
src/Main.hx:12: About to get bytes
src/Main.hx:16: Got the bytes
src/Main.hx:17: 0
[1]    54544 segmentation fault  ./bin/cpp/Main
如果有用的话,下面是Python不同的中断输出:

$ haxe -cp src -main Main -python bin/Main.py
$ python3 bin/Main.py
onError
True
About to trace err
SSLError(1, '[SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1045)')
我非常感谢您的指导。短暂性脑缺血发作


(来自Haxe论坛,我还没有得到回应。)

这是一个非常有趣的互动,下面是按顺序发生的事情:

  • sys.Http
    接收响应并调用
    onStatus()
  • 调用
    responseBytes.getBytes()
    ,最终使
    haxe.io.BytesBuffer.getBytes()中的内部缓冲区无效。该方法的文档状态为“一旦调用,缓冲区就不能再使用”,因为它将内部缓冲区
    b
    设置为
    null
  • Http
    类然后尝试写入同一缓冲区,该缓冲区不再有效
  • 由于整个逻辑都有一个陷阱,因此调用
    onError()
    回调是由于空引用
传递给
onStatus()
的状态代码是200(OK),因此除了
getBytes()
调用之外,请求似乎可以正常工作。根据,对于这个特定的请求,
data
是空的。

一旦
getBytes()
调用从
onStatus()
处理程序移到
customRequest()
调用下面,它就会工作得更好。谢谢