我现在有个Cocos2d Quick项目从2.2.3升级到2.2.6,发现在Lua中用network.createHTTPRequest(callback, url, method)异步发送POST数据时,当发出的数据包是Json对象时会有问题,直到现在还不能解决:
假如我现在有个用network.createHTTPRequest(callback, url, method)创建的request对象用来发送网络请求,如果发送的POST数据包是名值对:
local httpRequest = network.createHTTPRequest(callback, myUrl, “POST”);
httpRequest:addPOSTValue(“firstName”, “Mike”);
httpRequest:start();
一切正常,回调函数中能接收到返回的数据。但是如果发送的POST数据包是Josn对象时(在Java层应该是用流的形式发送给服务器的):
local httpRequest = network.createHTTPRequest(callback, myUrl, “POST”);
httpRequest:addRequestHeader(“Content-Type:text/json”);
httpRequest:setPOSTData(myRequestData);
httpRequest:start();
这样的话服务端能接收到客户端的数据请求,但是发现其request数据包是null,也就是说收不到myRequestData,这样服务器就报错了。
我跟踪了Quick引擎中与此相关的QuickHTTPInterface.java类,发现当POST数据包是名值对时,QuickHTTPInterface对象执行的是postContent(HttpURLConnection http, String name, String value, boolean bNeedConnectSym)方法,而当POST数据包是Json对象时,执行的是postContentByteArray(HttpURLConnection http, byte] byteArray)方法。所以我怀疑这个方法并没有把Json数据发送给服务器。
我的项目在2.2.3的时候是好的,这个问题是把引擎升级到2.2.6后出现的。
请各路大神诊断诊断,这种情况到底是什么原因造成的,该怎么解决?