58,455
社区成员
发帖
与我相关
我的任务
分享
06-25 08:40:34.730: E/System(58): java.lang.SecurityException
06-25 08:40:34.730: E/System(58): at android.os.BinderProxy.transact(Native Method)
06-25 08:40:34.730: E/System(58): at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146)
06-25 08:40:34.730: E/System(58): at android.os.ServiceManager.addService(ServiceManager.java:72)
这个错误表示权限不足,android.os.ServiceManager.addService需要系统权限或者root权限
package com.eaxmple;
import com.example.R;//引用位于gen下的com.exampled的R.java。这个很重要
import android.R.string;
import java.util.ArrayList;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import java.util.HashMap;
import java.util.List;
import android.util.Log;
import android.view.View.OnClickListener;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.GridView;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class Eaxm extends Activity
{
private TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.main_layout);
//tv.setText(httpget());
tv.setText(httpget());
//把布局文件加入到acitivity
}
public static String httpget()
{
try
{
//
String serviceUrl = "http://localhost:80/WebService2MoxNews.asmx";
// 定义调用的WebService方法名
String soapAction = "http://tempuri.org/getNewsBody";
String methodName = "getNewsBody";
// 第1步:创建SoapObject对象,并指定WebService的命名空间和调用的方法名
SoapObject request = new SoapObject("http://tempuri.org/", methodName);
// 第2步:设置WebService方法的参数
request.addProperty("cid",1);
request.addProperty("nid",1);
// 第3步:创建SoapSerializationEnvelope对象,并指定WebService的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
// 设置bodyOut属性
envelope.dotNet = true;
envelope.bodyOut = request;
// 第4步:创建HttpTransportSE对象,并指定WSDL文档的URL
HttpTransportSE ht = new HttpTransportSE(serviceUrl);
//System.setProperty("http.keepAlive", "false");
String result = null;
// 第5步:调用WebService
ht.call(soapAction, envelope);
if (envelope.getResponse() != null)
{
// 第6步:使用getResponse方法获得WebService方法的返回结果
Object soapObject = (Object) envelope.getResponse();
// 通过getProperty方法获得Product对象的属性值
result = soapObject.toString();
return result;
}
else {
return result;
}
}
catch (Exception e)
{
//出错信息
e.printStackTrace();
Log.i("test", "出错:" + e.getMessage());
return "1";
}
}
}
调用方法返回结果1,也就是说程序没有正常的调用asmx。
我设置断点调试,在运行到 ht.call(soapAction, envelope); 时进入异常。
在logcat里面有这样的提示06-25 14:43:55.577: I/test(324): 出错:localhost/127.0.0.1:80 - Connection refused
这是什么原因?是不是我的asmx设置的不对。(ps:我的asmx在浏览器中可以正常调用,iis也是一直开启)