【发布时间】:2014-10-07 21:52:27
【问题描述】:
我正在尝试从 Android 应用程序设置到 SOAP WebService 的连接,但每次我在结果中遇到错误时: 对象引用未设置为对象 java 的实例 似乎是来自服务器的错误 --> SOAP Webservice call from Java gives "Object reference not set to an instance of an object"
但是当我通过带有 POST 请求的网络浏览器尝试它时,它工作正常:)
此服务http://ws.cdyne.com/ip2geo/ip2geo.asmx?op=ResolveIP
private static String NAMESPACE = "http://ws.cdyne.com/";
private static String URL = "http://ws.cdyne.com/ip2geo/ip2geo.asmx";
private static String SOAP_ACTION = "http://ws.cdyne.com/";
public static String invokeHelloWorldWS(String name, String webMethName) {
String resTxt = null;
SoapObject request = new SoapObject(NAMESPACE, webMethName);
PropertyInfo sayHelloPI = new PropertyInfo();
// Set name
sayHelloPI.setName("ipAddress");
// Set Value
sayHelloPI.setValue("88.212.35.129");
// Set dataType
sayHelloPI.setType(String.class);
// Add the property to request object
request.addProperty(sayHelloPI);
// Create envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
// Set output SOAP object
envelope.setOutputSoapObject(request);
// Create HTTP call object
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try{
// Invoke web service
androidHttpTransport.call(SOAP_ACTION+webMethName, envelope); //webMethName = "ResolveIP"
// Get the response
Log.d("a", androidHttpTransport.responseDump);
//SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
// Assign it to resTxt variable static variable
//resTxt = response.toString();
}catch(Exception e){
//Print error
e.printStackTrace();
}
}
我在谷歌上花了很多时间,但我无法正确回答为什么会发生这种情况
// 编辑 最后我做对了......我知道为什么但是当我发送这样的第二个参数时(我重用旧属性):
sayHelloPI.setName("licenseKey");
sayHelloPI.setValue("some_key");
sayHelloPI.setType(String.class);
request.addProperty(sayHelloPI);
它没有工作。但是当我创建新的 Property 对象时它可以工作:
PropertyInfo sayHelloPI1 = new PropertyInfo();
sayHelloPI1.setName("licenseKey");
sayHelloPI1.setValue("ds");
sayHelloPI1.setType(String.class);
request.addProperty(sayHelloPI1);
也许下次能帮到别人
【问题讨论】:
-
你在使用 ksoap2 吗?
-
是的,我的朋友。我知道我可以简单地从 android 发送 POST 请求(因为从浏览器,这种方式有效),我应该可以,但我想像普通的肥皂信封一样发送它
标签: java android web-services soap