// 命名空间
private String NAMESPACE = "http://WebXml.com.cn/";
// 访问的方法名
private String METHOD_NAME = "getSupportProvinceCity";
// 命名空间+方法名
private String SOAP_ACTION = "http://WebXml.com.cn/getSupportProvinceCity";
// 服务的url
private String serviceUrl = "http://webservice.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx";
利用这几个变量实现邮政编码的支持城市的查询!!!拜托了,很急!!
添加web引用不行吗?
最主要的是得到的DataSet我没法下手,想要分别得到省份和地区。能给我说下吗?尽量有实际的代码!!!
@mitty:
ServiceReference1.ChinaZipSearchWebServiceSoapClient client = new WindowsFormsApplication3.ServiceReference1.ChinaZipSearchWebServiceSoapClient();
DataSet ds = client.getSupportProvinceCity();
dataGridView1.DataSource = ds.Tables[0];
我试验了下 可以的
下面是我的app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ChinaZipSearchWebServiceSoap" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="6553600" maxBufferPoolSize="52428800" maxReceivedMessageSize="6553600"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="819200" maxArrayLength="16384"
maxBytesPerRead="409600" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
<customBinding>
<binding name="ChinaZipSearchWebServiceSoap12">
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Soap12" writeEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</textMessageEncoding>
<httpTransport manualAddressing="false" maxBufferPoolSize="52428800"
maxReceivedMessageSize="6553600" allowCookies="false" authenticationScheme="Anonymous"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="6553600" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://webservice.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx"
binding="basicHttpBinding" bindingConfiguration="ChinaZipSearchWebServiceSoap"
contract="ServiceReference1.ChinaZipSearchWebServiceSoap"
name="ChinaZipSearchWebServiceSoap" />
</client>
</system.serviceModel>
</configuration>
1.添加服务引用:http://webservice.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx
2.调用:getAddressByZipCode
3.OK 返回的是你传入的邮政编码的地方,可以到村子的 ,不是您说的“最主要的是得到的DataSet我没法下手”
4.赶紧动手吧
5.成功后,多给我点豆豆吧!
祝你好运!!
我要用的服务和方法是规定好的!!!!不能修改
@mitty: 不知所云
我们经理规定用"http://webservice.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx";这个url的getSupportProvinceCity这个方法,不能用你说的那个!!!
@mitty: Why? 有什么坏处吗?你们经理是何方高僧??求指教。。。。。!
虽然 我没用到你说的,但还是谢了
// 命名空间 private String NAMESPACE = "http://WebXml.com.cn/"; // 访问的方法名 private String METHOD_NAME = "getSupportProvinceCity"; // 命名空间+方法名 private String SOAP_ACTION = "http://WebXml.com.cn/getSupportProvinceCity"; // 服务的url private String serviceUrl = "http://webservice.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx"; private Button search; private ArrayList<HashMap<String, String>> province_city = new ArrayList<HashMap<String, String>>(); private SimpleAdapter sa; private ListView list; private HashMap<String, String> hm; private ProgressDialog progressDialog = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.country_down_province_and_city_layout); search = (Button) findViewById(R.id.w_countryandprovince); list = (ListView) findViewById(R.id.w_provinceList); search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 显示进度条对话框 progressDialog = ProgressDialog.show( CountryDownProvinceAndCity.this, "请稍等...", "获取数据中...", true); // 执行异步任务 new NetAsyncTask().execute(serviceUrl); } }); } class NetAsyncTask extends AsyncTask<String, String, ArrayList<HashMap<String, String>>> { @Override protected ArrayList<HashMap<String, String>> doInBackground( String... params) { return getResult(); } @Override protected void onPostExecute(ArrayList<HashMap<String, String>> result) { // 将list列表添加到适配器中并显示 sa = new SimpleAdapter(CountryDownProvinceAndCity.this, province_city, R.layout.province_city, new String[] { "province", "cityname" }, new int[] { R.id.w_provinceItem, R.id.w_countryItem }); list.setAdapter(sa); // 将进度条对话框设为不可见状态 progressDialog.dismiss(); super.onPostExecute(result); } } public ArrayList<HashMap<String, String>> getResult() { SoapObject so, dicChild = null, dictionary, resultSo, transRes; String cityname, province, Nextprovince = null; so = new SoapObject(NAMESPACE, METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.bodyOut = so; envelope.dotNet = true; HttpTransportSE transport = new HttpTransportSE(serviceUrl); try { transport.call(SOAP_ACTION, envelope); resultSo = (SoapObject) envelope.bodyIn; // 上面为获得内容,下面为解析内容模块 // 获得返回的结果 transRes = (SoapObject) resultSo .getProperty("getSupportProvinceCityResult"); // 解析第二个属性 dictionary = (SoapObject) transRes.getProperty(1); // 解析第二个属性的第一个节点内容 dicChild = (SoapObject) dictionary.getProperty(0); int length = dicChild.getPropertyCount(); for (int i = 0; i < length; i++) { province = Nextprovince; SoapObject sObject = (SoapObject) dicChild.getProperty(i); // 两种方法,分别获得省份和城市 province = sObject.getProperty("PROVINCE").toString(); cityname = sObject.getProperty(0).toString(); Log.d("info", "cityname:" + cityname); // 将得到的数据添加到HashMap中,将HashMap设置到List里 hm = new HashMap<String, String>(); hm.put("province", province); hm.put("cityname", cityname); province_city.add(hm); } } catch (IOException e) { Log.e("TAG", "IO" + e.getMessage()); } catch (XmlPullParserException e) { Log.e("TAG", "xml" + e.getMessage()); e.printStackTrace(); } return province_city; }
这是我自己写的代码,上面的代码我看不太懂!!!不好意思啊,这个是将得到的城市与省份设置到ListView里展示出来的。
请大家指点指点