微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice

1. 查手机号

public class MainActivity extends Activity {

	private EditText et;
	private TextView tv;
	protected String num;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
			
		Button btn = (Button)this.findViewById(R.id.btn);
		et=(EditText)this.findViewById(R.id.et);
		tv=(TextView)this.findViewById(R.id.tv);
		
		btn.setonClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				num=et.getText().toString().trim();
				if("".equals(num) || num.length()<7){
					et.setError("您输入的手机号码有误");
					et.requestFocus();
					tv.setText("");
					return;
				}
				
				new Thread(new Runnable() {
					
					@Override
					public void run() {
						//查询手机号码
						getRemoteInfo(num);
						
					}
				}).start();	
			}
		});	
	}

	//手机号段归属地查询
	protected void getRemoteInfo(String num) {
		
		String nameSpace="http://WebXml.com.cn/";  //命名空间
		String methodName = "getMobileCodeInfo";   //接口的方法名
		String endPoint = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
		String soapAction = "http://WebXml.com.cn/getMobileCodeInfo";  // SOAP Action

		// 指定WebService的命名空间和调用方法名
		SoapObject rpc = new SoapObject(nameSpace,methodName); 
		// 设置需调用WebService接口需要传入的两个参数mobileCode、userId
		rpc.addProperty("mobileCode",num);
		rpc.addProperty("userId","");
		
		// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
		envelope.bodyOut=rpc;
		// 设置是否调用的是dotNet开发的WebService
		envelope.dotNet = true;
		// 等价于envelope.bodyOut = rpc;
		envelope.setoutputSoapObject(rpc);
		
		HttpTransportSE transport = new HttpTransportSE(endPoint);
		// 调用WebService
		try {
			transport.call(soapAction,envelope);
		} catch (IOException e) {
			e.printstacktrace();
		} catch (XmlPullParserException e) {
			e.printstacktrace();
		}

		
		// 获取返回的数据 getMobileCodeInfoResponse{getMobileCodeInfoResult=15010388992:北京 北京 北京移动全球通卡; }
		SoapObject object = (SoapObject) envelope.bodyIn;
		
		// 获取返回的结果 
		String result = object.getProperty(0).toString();
		// 将WebService返回的结果显示在TextView中
		System.out.println(object.toString()+"");
		
		Message msg=Message.obtain();
		msg.what=1;
		Bundle bundle=new Bundle();
		bundle.putString("msg",result);
		msg.setData(bundle);
		handler.sendMessage(msg);
		
	}
	
	Handler handler=new Handler(){
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case 1:
				String result=msg.getData().getString("msg");
				tv.setText(result);
				break;

			default:
				break;
			}
		};
	};

}

2 天气

public class WeatherUI extends Activity {
	
	private static final String NAMESPACE = "http://WebXml.com.cn/";
	private static String endPoint = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
	private String methodName = "getWeatherbyCityName";   //接口的方法名
	private String soapAction = "http://WebXml.com.cn/getWeatherbyCityName";  // SOAP Action
	private EditText weather_et;
	private TextView weather_tv;
	private String weatherToday;	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.weather);
		
		weather_et =(EditText)this.findViewById(R.id.weather_et);
		weather_tv =(TextView)this.findViewById(R.id.weather_tv);
		
		this.findViewById(R.id.weather_btn).setonClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				String str=weather_et.getText().toString().trim();
				MyTask myTask=new MyTask();
				myTask.execute(str);
				
			}
		});
	}


	//线程
	class MyTask extends AsyncTask<String,String,String>{

		@Override
		protected String doInBackground(String... params) {
			String str=params[0];
			SoapObject object=getWeather(str);
			
			return parseWeather(object);
			
		}
		
		@Override
		protected void onPostExecute(String result) {
			if(result!=null){
				
				weather_tv.setText(result);
				
			}else{
				Toast.makeText(WeatherUI.this,"出错",1).show();
			}
			super.onPostExecute(result);
		}
		
	}

	private SoapObject getWeather(String cityName) {
		
		// 指定WebService的命名空间和调用方法名
				SoapObject rpc = new SoapObject(NAMESPACE,methodName); 
				// 设置需调用WebService接口需要传入的两个参数mobileCode、userId
				rpc.addProperty("theCityName",cityName);
					
				// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
				SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
				envelope.bodyOut=rpc;
				// 设置是否调用的是dotNet开发的WebService
				envelope.dotNet = true;
				// 等价于envelope.bodyOut = rpc;
				envelope.setoutputSoapObject(rpc);
				
				HttpTransportSE transport = new HttpTransportSE(endPoint);
				// 调用WebService
				try {
					transport.call(soapAction,envelope);
				} catch (IOException e) {
					e.printstacktrace();
				} catch (XmlPullParserException e) {
					e.printstacktrace();
				}

				SoapObject detail = null;
				try {
					detail = (SoapObject) envelope.getResponse();
				} catch (SoapFault e) {
					e.printstacktrace();
				}
				return detail;
						
	}

	
	public String parseWeather(SoapObject object) {
		System.out.println(object);
		String date = object.getProperty(6).toString();
		String date4 = object.getProperty(4).toString();
		
		weatherToday = "今天:" + date4;
		weatherToday = weatherToday + "\n天气:" + date.split("日")[1];
		System.out.println("天气0=="+date.split("日")[0]);
		System.out.println("天气1=="+date.split("日")[1]);
		
		weatherToday = weatherToday + "\n气温:" + object.getProperty(5).toString();
		return weatherToday = weatherToday + "\n风力:" + object.getProperty(7).toString() + "\n";
			
	}
	

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐