Java HttpMessage.setMethod(HttpMessage.POST)在阻止SenderDestination时由GET更改
我正在尝试将Blackberry应用程序从OS 6迁移到OS 7(我的应用程序目前在OS 6上运行)。理论上它不会引起任何问题,但我发现了一个我仍然无法解决的问题。在执行对web服务(SOAP)的调用时,我将HttpMessages设置为使用POST方法,但在执行调用时,它作为GET到达服务器。这对我来说是个大问题,因为我使用的服务器不支持GET(总是导致“Http 500错误”)。这个问题不会发生在模拟器上,只会发生在设备上 你知道这方面有什么解决办法吗?这是操作系统版本的问题吗?(我使用的代码见下文) 装置 型号:Bold 9930 航母:斯普林特 操作系统:7.0捆绑1296(v7.0.0.241,平台5.0.0.442) 模拟器(在模拟器方面,我没有任何问题) 型号:Bold 9930 操作系统:1962年7.0捆绑包(v7.0.0.4402011年9月24日签署,平台4.0.0.141)Java HttpMessage.setMethod(HttpMessage.POST)在阻止SenderDestination时由GET更改,java,blackberry,mobile,soap,Java,Blackberry,Mobile,Soap,我正在尝试将Blackberry应用程序从OS 6迁移到OS 7(我的应用程序目前在OS 6上运行)。理论上它不会引起任何问题,但我发现了一个我仍然无法解决的问题。在执行对web服务(SOAP)的调用时,我将HttpMessages设置为使用POST方法,但在执行调用时,它作为GET到达服务器。这对我来说是个大问题,因为我使用的服务器不支持GET(总是导致“Http 500错误”)。这个问题不会发生在模拟器上,只会发生在设备上 你知道这方面有什么解决办法吗?这是操作系统版本的问题吗?(我使用的代
你确定没有坏的代理在服务器和设备之间捣乱吗?此外,根据HTTP规范,返回500错误的服务器并不表示它不支持GET方法。这可能是405或501错误。我在不同的地方(在我家的办公室)进行了尝试,在服务器端进行了调试,我可以看到消息是使用GET方法到达的,当前在我尝试制作应用程序的服务器应用程序上,不支持GET方法,我从服务器得到的完整响应是未找到的操作的端点引用(EPR)是/axis2/services/SystemService,WSA Action=null,我无法理解为什么消息总是通过GET方法到达?此外,我的应用程序在具有OS 6的设备和模拟器Bold 9930 OS 7上运行良好,调用之间的唯一区别是HTTP方法,使用该方法可以到达服务器
public void run() {
context.setEnableBtnsend(false);
BlockingSenderDestination blockSendDest = null;
try {
URI uri = URI.create(URL_BASE);
blockSendDest
= (BlockingSenderDestination) DestinationFactory.getSenderDestination(
senderContext.getName(), uri);
if (blockSendDest == null) {
blockSendDest = DestinationFactory.createBlockingSenderDestination(
senderContext, uri);
}
ByteMessage requestMessage = blockSendDest.createByteMessage();
requestMessage.setTransportHeader("Content-Type", "text/xml;charset=UTF-8");
requestMessage.setTransportHeader("SOAPAction", "\"\"");
// getBodyRequest() -> Insert SOAP request, works fine, was tested on SOAP UI
requestMessage.setStringPayload(getBodyRequest());
((HttpMessage) requestMessage).setMethod(HttpMessage.POST);
blockSendDest.resume();
Message response = blockSendDest.sendReceive(requestMessage);
if (response != null) {
procesMessageResponse(response);
}
// ...
}
catch (Exception ex) {
handleException(ex);
}