android webservice 出错
场景:android调用webservice连接oracle出错,
android调用webservice连接oracle出错,求助!
目的:想将服务器上oracle数据库表中的数据在手机上展示
方法:做了一个webservice服务连接数据库,然后在android手机上调用此webservice
问题:程序中没有提示错误,但一运行时程序就强制关闭,不知道问题出现在哪里?
源码:
package com.example.sayhello_wb;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView mobileAddress;
//private Button btnSearch;
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 命名空间
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
String nameSpace = "http://tempuri.org/";
// 调用的方法名称
String methodName = "sqldatt2";
// EndPoint
String endPoint = "http://10.64.160.96/WsData/Service.asmx";
// SOAP Action
String soapAction = "http://tempuri.org/sqldatt2";
SoapObject request = new SoapObject(nameSpace, methodName);
request.addProperty( "name", "user id=system;data source=orcl_dz;password=xxzx");
request.addProperty( "strsql", "select name from v$datafile");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
HttpTransportSE ht = new HttpTransportSE(endPoint);
// 设置是否调用的是dotNet开发的WebService
envelope.dotNet = true;
// 等价于envelope.bodyOut = rpc;
envelope.setOutputSoapObject(request);
try {
// 调用WebService
ht.call(soapAction, envelope);
} catch (Exception e) {
e.printStackTrace();
}
// 获取返回的数据
SoapObject object = (SoapObject) envelope.bodyIn;
// 获取返回的结果
String result = object.getProperty(0).toString();
//将WebService返回的结果显示在TextView中
mobileAddress.setText(object.getProperty(0).toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
错误提示:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sayhello_wb/com.example.sayhello_wb.MainActivity}: java.lang.NullPointerException
Caused by: java.lang.NullPointerException
注:本人新手,接触android编程时间不长;
我Q:78312791 希望能和大家多多交流
------解决方案--------------------
空指针就debug看下,,,
------解决方案--------------------
就是先要判定你是在那句代码上报错的
------解决方案--------------------
websevcie 能正常返回数据吗?
------解决方案--------------------
用soapui 先看看返回数据对不对
android调用webservice连接oracle出错,求助!
目的:想将服务器上oracle数据库表中的数据在手机上展示
方法:做了一个webservice服务连接数据库,然后在android手机上调用此webservice
问题:程序中没有提示错误,但一运行时程序就强制关闭,不知道问题出现在哪里?
源码:
package com.example.sayhello_wb;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView mobileAddress;
//private Button btnSearch;
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 命名空间
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
String nameSpace = "http://tempuri.org/";
// 调用的方法名称
String methodName = "sqldatt2";
// EndPoint
String endPoint = "http://10.64.160.96/WsData/Service.asmx";
// SOAP Action
String soapAction = "http://tempuri.org/sqldatt2";
SoapObject request = new SoapObject(nameSpace, methodName);
request.addProperty( "name", "user id=system;data source=orcl_dz;password=xxzx");
request.addProperty( "strsql", "select name from v$datafile");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
HttpTransportSE ht = new HttpTransportSE(endPoint);
// 设置是否调用的是dotNet开发的WebService
envelope.dotNet = true;
// 等价于envelope.bodyOut = rpc;
envelope.setOutputSoapObject(request);
try {
// 调用WebService
ht.call(soapAction, envelope);
} catch (Exception e) {
e.printStackTrace();
}
// 获取返回的数据
SoapObject object = (SoapObject) envelope.bodyIn;
// 获取返回的结果
String result = object.getProperty(0).toString();
//将WebService返回的结果显示在TextView中
mobileAddress.setText(object.getProperty(0).toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
错误提示:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sayhello_wb/com.example.sayhello_wb.MainActivity}: java.lang.NullPointerException
Caused by: java.lang.NullPointerException
注:本人新手,接触android编程时间不长;
我Q:78312791 希望能和大家多多交流
------解决方案--------------------
空指针就debug看下,,,
------解决方案--------------------
就是先要判定你是在那句代码上报错的
------解决方案--------------------
websevcie 能正常返回数据吗?
------解决方案--------------------
用soapui 先看看返回数据对不对