我试图从Android应用程序调用ASP.NET Webservice(ASMX)但是我在SoapPrimitive响应后得到NullPointerException =(SoapPrimitive)envelope.getResponse(); [英] I Am Trying To Calling ASP.NET Webservice (ASMX) from an Android Application But I am Getting NullPointerException After SoapPrimitive response = (SoapPrimitive)envelope.getResponse();

查看:75
本文介绍了我试图从Android应用程序调用ASP.NET Webservice(ASMX)但是我在SoapPrimitive响应后得到NullPointerException =(SoapPrimitive)envelope.getResponse();的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

GetReport.java



package com.example.clientnetpositionreport;



import org.ksoap2。 SoapEnvelope;

import org.ksoap2.serialization.PropertyInfo;

import org.ksoap2.serialization.SoapObject;

import org.ksoap2.serialization .SoapPrimitive;

import org.ksoap2.serialization.SoapSerializationEnvelope;

import org.ksoap2.transport.HttpTransportSE;

import android.app。活动;

导入android.os.Bundle;

导入android.os.Handler;

导入android.util.Log;

import android.widget.TextView;



public class GetReport extends Activity {

private static final String NAMESPACE =http ://tempuri.org; //com.service.ServiceImpl

private static final String URL =http://commodities.karvy.com/services/NetPositionReport.asmx;

private static final String METHOD_NAME =NetPositionReport;

private static final String SOAP_ACTION =http://tempuri.org/NetPositionReport;

private String webResponse =;

private Handler handler = new Handler();

私有线程;



私有TextView textView1;

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

requestWindowFeature(1);

setContentView(R.layout.activity_tv);

textView1 =(TextView)findViewById(R.id.textview1);



// int val = getIntent()。getExtras()。getInt(Title) ;

String title = getIntent()。getExtras()。getString(ClientCode);

//Log.d(Data is,val); < br $>


System.out.println(数据是+标题);



startWebAccess(title);



}

public void startWebAccess(String a){

final String aa = a;

thread = new Thread(){

public void run(){

try {

Log.d(Req value0R,Starting ...); // log.d用于调试

SoapObject request = new Soa pObject(NAMESPACE,METHOD_NAME);

//简单对象访问协议

PropertyInfo fromProp = new PropertyInfo();

fromProp.setName( ClientCode);

fromProp.setValue(aa);

fromProp.setType(String.class);

request.addProperty(fromProp) ;



PropertyInfo fromProp2 = new PropertyInfo();

fromProp2.setName(String);

fromProp2 .setValue(Om $ @!#@ M ^#R);

fromProp2.setType(String.class);

request.addProperty(fromProp2);



Log.d(req value1,request.toString());

System.out.println(ok1) ;

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet = false;

envelope.setOutputSoapObject(request); < br $>


Log.d(req value2,envelope.toString());

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

androidHttpTransport.debug = true;

Log.d(Req value2B,androidHttpTransport.toString());

androidHttpTransport.call(SOAP_ACTION,信封);

System.out.println(ok2);

Log.d(Req value2C,androidHttpTransport.toString());

// Object objectResult =(Object)envelope.getResponse();

SoapPrimitive response =(SoapPrimi (参见)envelope.getResponse();

// System.out.println(输出:+ response.toString());

// Log.d( req value3,response.toString());

System.out.println(ok3);

//textView1.setText(objectResult.toString() );

System.out.println(ok4);

webResponse = response.toString();

Log.d( Req value4,webResponse.toString());

System.out.println(ok5);

}



catch(例外e){

System.out.println(内部捕获);

Log.d(Req value4,e。的getMessage());

webResponse =连接/互联网问题;

// Toast.makeText(getApplicationContext(),加载问题/服务器关闭,Toast.LENGTH_SHORT).show( );

}



handler.post(createUI);

}

};



thread.start();

}





final Runnable createUI = new Runnable(){



public void run(){

if(webResponse) != null){



textView1.setText(webResponse);

}

else {

webResponse =目前没有提供数据;

textView1.setText(webResponse);

}

}

};



}







LogCat。



02-25 09:59:39.710:D / gralloc_goldfish(539):没有GPU的仿真器检测到仿真。

02-25 10:00:28.019:I / System.out(539):数据是64396

02-25 10:00:28.060:D / req value0R(539):开始......

02-25 10:00:28.070:D / Req value1(539):NetPositionReport {ClientCode = 64396; !字符串=嗡$ @#@ M 1#R等}

02-25 10:00:28.080:I / System.out(539):ok1

02-25 10:00:28.349:D / Req value2( 539):org.ksoap2.serialization.SoapSerializationEnvelope@4108c840

02-25 10:00:28.389:D / Req value2B(539):org.ksoap2.transport.HttpTransportSE@4108dda0

02-25 10:00:28.509:D / dalvikvm(539):GC_FOR_ALLOC释放116K,4%免​​费6976K / 7239K,暂停48ms

02-25 10:00:33.320: I / System.out(539):ok2

02-25 10:00:33.320:D / Req value2C(539):org.ksoap2.transport.HttpTransportSE@4108dda0

02-25 10:00:33.330:I / System.out(539):ok3

02-25 10:00:33.330:I / System.out(539):ok4

02-25 10:00:33.330:I / System.out(539):内部捕获

02-25 10:00:33.330:W / dalvikvm(539): threadid = 11:线程退出,未捕获异常(组= 0x409961f8)

02-25 10:00:33.330:E / AndroidRuntime(539):致命异常:Thread-72

02-25 10:00:33.330:E / AndroidRuntime(539):java.lang.NullPointerException:println需要一条消息

02-25 10:00:33.330:E / AndroidRuntime(539):在android.util.Log.println_native(原生方法)

02-25 10:00 :33.330:E / AndroidRuntime(539):在android.util.Log.d(Log.java:138)

02-25 10:00:33.330:E / AndroidRuntime(539):at com.example.clientnetpositionreport.GetReport $ 2.run(GetReport.java:87)

解决方案

@!#@ M ^#R);

fromProp2.setType(String.class);

request.addProperty(fromProp2);



Log.d(req value1,request.toString());

System.out.println(ok1) ;

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet = false;

envelope.setOutputSoapObject(request); < br $>


Log.d(req value2,envelope.toString());

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

androidHttpTransport.debug = true;

Log.d(Req value2B,androidHttpTransport.toString());

androidHttpTransport.call(SOAP_ACTION,信封);

System.out.println(ok2);

Log.d(Req value2C,androidHttpTransport.toString());

// Object objectResult =(Object)envelope.getResponse();

SoapPrimitive response =(SoapPrimi (参见)envelope.getResponse();

// System.out.println(输出:+ response.toString());

// Log.d( req value3,response.toString());

System.out.println(ok3);

//textView1.setText(objectResult.toString() );

System.out.println(ok4);

webResponse = response.toString();

Log.d( Req value4,webResponse.toString());

System.out.println(ok5);

}



catch(例外e){

System.out.println(内部捕获);

Log.d(Req value4,e。的getMessage());

webResponse =连接/互联网问题;

// Toast.makeText(getApplicationContext(),加载问题/服务器关闭,Toast.LENGTH_SHORT).show( );

}



handler.post(createUI);

}

};



thread.start();

}





final Runnable createUI = new Runnable(){



public void run(){

if(webResponse) != null){



textView1.setText(webResponse);

}

else {

webResponse =目前没有提供数据;

textView1.setText(webResponse);

}

}

};



}







LogCat。



02-25 09:59:39.710:D / gralloc_goldfish(539):没有GPU的仿真器检测到仿真。

02-25 10:00:28.019:I / System.out(539):数据是64396

02-25 10:00:28.060:D / req value0R(539):开始......

02-25 10:00:28.070:D / Req value1(539):NetPositionReport {ClientCode = 64396; !字符串=嗡

@#@ M 1#R等}

02-25 10:00:28.080:I / System.out(539):ok1

02-25 10:00:28.349:D / Req value2( 539):org.ksoap2.serialization.SoapSerializationEnvelope@4108c840

02-25 10:00:28.389:D / Req value2B(539):org.ksoap2.transport.HttpTransportSE@4108dda0

02-25 10:00:28.509:D / dalvikvm(539):GC_FOR_ALLOC释放116K,4%免​​费6976K / 7239K,暂停48ms

02-25 10:00:33.320: I / System.out(539):ok2

02-25 10:00:33.320:D / Req value2C(539):org.ksoap2.transport.HttpTransportSE@4108dda0

02-25 10:00:33.330:I / System.out(539):ok3

02-25 10:00:33.330:I / System.out(539):ok4

02-25 10:00:33.330:I / System.out(539):内部捕获

02-25 10:00:33.330:W / dalvikvm(539): threadid = 11:线程退出,未捕获异常(组= 0x409961f8)

02-25 10:00:33.330:E / AndroidRuntime(539):致命异常:Thread-72

02-25 10:00:33.330:E / AndroidRuntime(539):java.lang.NullPointerException:println需要一条消息

02-25 10:00:33.330:E / AndroidRuntime(539):在android.util.Log.println_native(原生方法)

02-25 10:00 :33.330:E / AndroidRuntime(539):在android.util.Log.d(Log.java:138)

02-25 10:00:33.330:E / AndroidRuntime(539):at com.example.clientnetpositionreport.GetReport

2.run(GetReport.java:87)

GetReport.java

package com.example.clientnetpositionreport;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.TextView;

public class GetReport extends Activity{
private static final String NAMESPACE ="http://tempuri.org"; //com.service.ServiceImpl
private static final String URL = "http://commodities.karvy.com/services/NetPositionReport.asmx";
private static final String METHOD_NAME = "NetPositionReport";
private static final String SOAP_ACTION = "http://tempuri.org/NetPositionReport";
private String webResponse = "";
private Handler handler = new Handler();
private Thread thread;

private TextView textView1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(1);
setContentView(R.layout.activity_tv);
textView1 = (TextView) findViewById(R.id.textview1);

//int val=getIntent().getExtras().getInt("Title");
String title= getIntent().getExtras().getString("ClientCode");
//Log.d("Data is", val);

System.out.println("Data is "+title);

startWebAccess(title);

}
public void startWebAccess(String a){
final String aa=a;
thread = new Thread(){
public void run(){
try{
Log.d("Req value0R", "Starting...");//log.d is used for debug
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//simple object access protocol
PropertyInfo fromProp =new PropertyInfo();
fromProp.setName("ClientCode");
fromProp.setValue(aa);
fromProp.setType(String.class);
request.addProperty(fromProp);

PropertyInfo fromProp2 =new PropertyInfo();
fromProp2.setName("String");
fromProp2.setValue("Om$@!#@M^#R");
fromProp2.setType(String.class);
request.addProperty(fromProp2);

Log.d("Req value1", request.toString());
System.out.println("ok1");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);

Log.d("Req value2", envelope.toString());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
Log.d("Req value2B", androidHttpTransport.toString());
androidHttpTransport.call(SOAP_ACTION, envelope);
System.out.println("ok2");
Log.d("Req value2C", androidHttpTransport.toString());
// Object objectResult = (Object)envelope.getResponse();
SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
// System.out.println("Output: "+response.toString());
// Log.d("Req value3", response.toString());
System.out.println("ok3");
//textView1.setText(objectResult.toString());
System.out.println("ok4");
webResponse = response.toString();
Log.d("Req value4", webResponse.toString());
System.out.println("ok5");
}

catch(Exception e){
System.out.println("inside catch");
Log.d("Req value4", e.getMessage());
webResponse = "Connection/Internet problem";
// Toast.makeText(getApplicationContext(), "Loading problem/Server down", Toast.LENGTH_SHORT).show();
}

handler.post(createUI);
}
};

thread.start();
}


final Runnable createUI = new Runnable() {

public void run(){
if(webResponse!=null) {

textView1.setText(webResponse);
}
else {
webResponse ="No data provided presently";
textView1.setText(webResponse);
}
}
};

}



LogCat.

02-25 09:59:39.710: D/gralloc_goldfish(539): Emulator without GPU emulation detected.
02-25 10:00:28.019: I/System.out(539): Data is 64396
02-25 10:00:28.060: D/Req value0R(539): Starting...
02-25 10:00:28.070: D/Req value1(539): NetPositionReport{ClientCode=64396; String=Om$@!#@M^#R; }
02-25 10:00:28.080: I/System.out(539): ok1
02-25 10:00:28.349: D/Req value2(539): org.ksoap2.serialization.SoapSerializationEnvelope@4108c840
02-25 10:00:28.389: D/Req value2B(539): org.ksoap2.transport.HttpTransportSE@4108dda0
02-25 10:00:28.509: D/dalvikvm(539): GC_FOR_ALLOC freed 116K, 4% free 6976K/7239K, paused 48ms
02-25 10:00:33.320: I/System.out(539): ok2
02-25 10:00:33.320: D/Req value2C(539): org.ksoap2.transport.HttpTransportSE@4108dda0
02-25 10:00:33.330: I/System.out(539): ok3
02-25 10:00:33.330: I/System.out(539): ok4
02-25 10:00:33.330: I/System.out(539): inside catch
02-25 10:00:33.330: W/dalvikvm(539): threadid=11: thread exiting with uncaught exception (group=0x409961f8)
02-25 10:00:33.330: E/AndroidRuntime(539): FATAL EXCEPTION: Thread-72
02-25 10:00:33.330: E/AndroidRuntime(539): java.lang.NullPointerException: println needs a message
02-25 10:00:33.330: E/AndroidRuntime(539): at android.util.Log.println_native(Native Method)
02-25 10:00:33.330: E/AndroidRuntime(539): at android.util.Log.d(Log.java:138)
02-25 10:00:33.330: E/AndroidRuntime(539): at com.example.clientnetpositionreport.GetReport$2.run(GetReport.java:87)

解决方案

@!#@M^#R");
fromProp2.setType(String.class);
request.addProperty(fromProp2);

Log.d("Req value1", request.toString());
System.out.println("ok1");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);

Log.d("Req value2", envelope.toString());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
Log.d("Req value2B", androidHttpTransport.toString());
androidHttpTransport.call(SOAP_ACTION, envelope);
System.out.println("ok2");
Log.d("Req value2C", androidHttpTransport.toString());
// Object objectResult = (Object)envelope.getResponse();
SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
// System.out.println("Output: "+response.toString());
// Log.d("Req value3", response.toString());
System.out.println("ok3");
//textView1.setText(objectResult.toString());
System.out.println("ok4");
webResponse = response.toString();
Log.d("Req value4", webResponse.toString());
System.out.println("ok5");
}

catch(Exception e){
System.out.println("inside catch");
Log.d("Req value4", e.getMessage());
webResponse = "Connection/Internet problem";
// Toast.makeText(getApplicationContext(), "Loading problem/Server down", Toast.LENGTH_SHORT).show();
}

handler.post(createUI);
}
};

thread.start();
}


final Runnable createUI = new Runnable() {

public void run(){
if(webResponse!=null) {

textView1.setText(webResponse);
}
else {
webResponse ="No data provided presently";
textView1.setText(webResponse);
}
}
};

}



LogCat.

02-25 09:59:39.710: D/gralloc_goldfish(539): Emulator without GPU emulation detected.
02-25 10:00:28.019: I/System.out(539): Data is 64396
02-25 10:00:28.060: D/Req value0R(539): Starting...
02-25 10:00:28.070: D/Req value1(539): NetPositionReport{ClientCode=64396; String=Om


@!#@M^#R; }
02-25 10:00:28.080: I/System.out(539): ok1
02-25 10:00:28.349: D/Req value2(539): org.ksoap2.serialization.SoapSerializationEnvelope@4108c840
02-25 10:00:28.389: D/Req value2B(539): org.ksoap2.transport.HttpTransportSE@4108dda0
02-25 10:00:28.509: D/dalvikvm(539): GC_FOR_ALLOC freed 116K, 4% free 6976K/7239K, paused 48ms
02-25 10:00:33.320: I/System.out(539): ok2
02-25 10:00:33.320: D/Req value2C(539): org.ksoap2.transport.HttpTransportSE@4108dda0
02-25 10:00:33.330: I/System.out(539): ok3
02-25 10:00:33.330: I/System.out(539): ok4
02-25 10:00:33.330: I/System.out(539): inside catch
02-25 10:00:33.330: W/dalvikvm(539): threadid=11: thread exiting with uncaught exception (group=0x409961f8)
02-25 10:00:33.330: E/AndroidRuntime(539): FATAL EXCEPTION: Thread-72
02-25 10:00:33.330: E/AndroidRuntime(539): java.lang.NullPointerException: println needs a message
02-25 10:00:33.330: E/AndroidRuntime(539): at android.util.Log.println_native(Native Method)
02-25 10:00:33.330: E/AndroidRuntime(539): at android.util.Log.d(Log.java:138)
02-25 10:00:33.330: E/AndroidRuntime(539): at com.example.clientnetpositionreport.GetReport


2.run(GetReport.java:87)


这篇关于我试图从Android应用程序调用ASP.NET Webservice(ASMX)但是我在SoapPrimitive响应后得到NullPointerException =(SoapPrimitive)envelope.getResponse();的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆