赞
踩
Cocos 编译native代码的时候,用cocos自带的xhr对象发送post请求一直不成功
编译的Web代码是可以直接请求的,一点问题没有,用postman请求也没问题。一开始一直报错,报的是调用C# 的lib文件的时候,在一段请求method判断的地方报了个错,没有具体原因, 报错如下
E/assert: function:open line:274
另外一个问题是,解决了之前报错后一直无法请求通
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) } }
第一个问题指向了一个具体文件的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"
加上,终于好了。。。平时我默认认为请求都是json格式的,又学到了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。