android:id="@+id/ok"
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_alignParentTop=“true”
android:layout_toRightOf="@+id/textView1"
android:text="@string/search" />
(4)完成应用内部对查询处理的主要代码:
import java.io.UnsupportedEncodingException;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
SOAP方式查询天气情况包括:指定命名空间、给出接口地址、设置方法名、设置查询接口参数
public class AndroidSoapActivity extends Activity {
private static final String NAMESPACE = “http:// WebXml.com.cn/”;
private static String URL = “http://www.webxml.com.cn/webservices/weatherwebservice.asmx”; private static final String METHOD_NAME = “getWeatherbyCityName”;
private static String SOAP_ACTION = “http:// WebXml.com.cn/getWeatherbyC-ityName”;
private String weatherToday;
private Button okButton;
private SoapObject detail;
private EditText cityNameText;
private TextView cityMsgView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_soap);
cityNameText =(EditText)findViewById(R.id.cityName);
cityMsgView = (TextView)findViewById(R.id.textView1);
okButton = (Button) findViewById(R.id.ok);
okButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
new showWeatherAsyncTask().execute();
}
});
}
使用AsyncTask异步方式获取并显示天气信息
private class showWeatherAsyncTask extends AsyncTask {
@Override
protected String doInBackground(String… Urls) {
showWeather();
return null;
}
protected void onPostExecute(String result) {
}
};
private void showWeather() {
String city = cityNameText.getText().toString().trim();
if(!city.isEmpty()){ getWeather(city);
}
}
public void getWeather(String cityName) {
try {
SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
rpc.addProperty(“theCityName”, cityName);
HttpTransportSE ht = new HttpTransportSE(URL);
ht.debug = true;
SoapSerializationEnvelopeenvelope=
newSoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet = true;
envelope.setOutputSoapObject(rpc);
ht.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
detail = (SoapObject)result.getProperty(“getWeatherbyCityNameResult”); System.out.println(“detail” + detail);
parseWeather(detail);
return;
}
catch (Exception e) {
e.printStackTrace();
}
}
解析SoapObject对象
总结
最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题 ,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节 ,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
上述【高清技术脑图】以及【配套的架构技术PDF】可以关注我免费获取
Android学习PDF+架构视频+面试文档+源码笔记
-P8xtPZlq-1646137783587)]
[外链图片转存中…(img-7aGD417A-1646137783588)]
上述【高清技术脑图】以及【配套的架构技术PDF】可以关注我免费获取
Android学习PDF+架构视频+面试文档+源码笔记
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。