当前位置:   article > 正文

Cocos XMLHttpRequest open方法method报错和后端接收不到request body问题

Cocos XMLHttpRequest open方法method报错和后端接收不到request body问题

项目场景:

Cocos 编译native代码的时候,用cocos自带的xhr对象发送post请求一直不成功


问题描述:

编译的Web代码是可以直接请求的,一点问题没有,用postman请求也没问题。一开始一直报错,报的是调用C# 的lib文件的时候,在一段请求method判断的地方报了个错,没有具体原因, 报错如下

E/assert: function:open line:274
  • 1

另外一个问题是,解决了之前报错后一直无法请求通

function httpPostCall(requsetUrl: string, requestData: any, requestHeaderList: Array<{ key: string, value: string }>, callback) {
    let request = new XMLHttpRequest();
    console.log("Status: Send Post Request to " + requsetUrl);
    try {
        request.onreadystatechange = function () {
            try{
                let response = null;
                if (request.readyState == 4 && (request.status >= 200 && request.status <= 400)) {
                    let httpStatus = request.statusText;
                    response = JSON.parse(request.responseText);
                    callback(true, response);
                } else {
                    callback(false, response);
                }
            }catch(e){
                cc.error(e)
            }
        };

        request.open("POST", requsetUrl, true);
        //add token
        setHeaders(requestHeaderList, request);
        request.send(JSON.stringify(requestData));
    } catch (e) {
        cc.error("Send Get Request error: ", e)
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

原因分析:

第一个问题指向了一个具体文件的274行,看了下是对请求method做了判断,以为安卓对代码做了处理不允许https,但是发现自己该加的都加了。emmmm仔细看了下代码,发现从别的地方copy来的method居然是Post,C#代码里只对post和POST做了判断。。。web可能因为原生支持xhr所以是另外的代码,没有影响
第二个问题,代码是用的同一套,为什么web是好的,安卓就有问题呢?安卓这边还不能调试,直接打各种log,发现是401错误,同样的请求在web上就是好的,不解,只能老老实实在本地起一个服务debug。用的spring security发现有filter处理的时候body一直是null的,emmmm就很奇怪,因为这个path是直接filter接住的,没有进controller,调试半天决定调一个正常controller试一试,发现http 415报错,好嘛,之前一直报错401,正常的controller才报错415,在header里把

"Content-Type","application/json"
  • 1

加上,终于好了。。。平时我默认认为请求都是json格式的,又学到了


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/152689
推荐阅读
相关标签
  

闽ICP备14008679号