说明:只是个例子,扩展性、复用性不好,只是提出一个思路,返回的XML解析代码写的也很烂
聪明的你,拿来代码的时候,肯定能解决这些问题
===========================================
关键代码:
try
{
// 发帖机原理,模拟浏览器
final String SERVER_URL = " http://10.40.15.11/Android/WebService.asmx " ; // 定义需要获取的内容来源地址
URL url = new URL(SERVER_URL);
URLConnection con = url.openConnection();
con.setDoOutput( true );
con.setRequestProperty( " Pragma: " , " no-cache " );
con.setRequestProperty( " Cache-Control " , " no-cache " );
con.setRequestProperty( " Content-Type " , " text/xml " );
OutputStreamWriter out = new OutputStreamWriter(con
.getOutputStream());
// 控件取值
EditText eTextName = (EditText) findViewById(R.id.tbx_name);
EditText eTextAge = (EditText) findViewById(R.id.tbx_age);
String xmlInfo = " <?xml version=\"1.0\" encoding=\"utf-8\"?><soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\"><soap12:Body><ShowEntity xmlns=\"http://tempuri.org/\"><person><Name> "
+ URLEncoder.encode(eTextName.getText().toString())
+ " </Name><Age> "
+ eTextAge.getText().toString()
+ " </Age></person></ShowEntity></soap12:Body></soap12:Envelope> " ;
// 发送
out.write( new String(xmlInfo.getBytes( " UTF-8 " )));
out.flush();
out.close();
// 取返回值
BufferedReader br = new BufferedReader( new InputStreamReader(con
.getInputStream()));
StringBuilder sBuilder = new StringBuilder();
String line = "" ;
for (line = br.readLine(); line != null ; line = br.readLine()) {
sBuilder.append(line);
}
// 解析XML
Pattern patternname = Pattern.compile( " <Name>.*?</Name> " );
Matcher matchername = patternname.matcher(sBuilder.toString());
if (matchername.find()) {
String name = matchername.group();
TextView lblname = (TextView) findViewById(R.id.lbl_name);
lblname.setText(URLDecoder.decode(name.substring(name
.indexOf( " > " ) + 1 , name.lastIndexOf( " < " ))));
}
Pattern patternage = Pattern.compile( " <Age>.*?</Age> " );
Matcher matcherage = patternage.matcher(sBuilder.toString());
if (matcherage.find()) {
String age = matcherage.group();
TextView lblage = (TextView) findViewById(R.id.lbl_age);
lblage.setText(age.substring(age.indexOf( " > " ) + 1 , age
.lastIndexOf( " < " )));
}
} catch (Exception e) {
String str = e.getMessage();
}
// 发帖机原理,模拟浏览器
final String SERVER_URL = " http://10.40.15.11/Android/WebService.asmx " ; // 定义需要获取的内容来源地址
URL url = new URL(SERVER_URL);
URLConnection con = url.openConnection();
con.setDoOutput( true );
con.setRequestProperty( " Pragma: " , " no-cache " );
con.setRequestProperty( " Cache-Control " , " no-cache " );
con.setRequestProperty( " Content-Type " , " text/xml " );
OutputStreamWriter out = new OutputStreamWriter(con
.getOutputStream());
// 控件取值
EditText eTextName = (EditText) findViewById(R.id.tbx_name);
EditText eTextAge = (EditText) findViewById(R.id.tbx_age);
String xmlInfo = " <?xml version=\"1.0\" encoding=\"utf-8\"?><soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\"><soap12:Body><ShowEntity xmlns=\"http://tempuri.org/\"><person><Name> "
+ URLEncoder.encode(eTextName.getText().toString())
+ " </Name><Age> "
+ eTextAge.getText().toString()
+ " </Age></person></ShowEntity></soap12:Body></soap12:Envelope> " ;
// 发送
out.write( new String(xmlInfo.getBytes( " UTF-8 " )));
out.flush();
out.close();
// 取返回值
BufferedReader br = new BufferedReader( new InputStreamReader(con
.getInputStream()));
StringBuilder sBuilder = new StringBuilder();
String line = "" ;
for (line = br.readLine(); line != null ; line = br.readLine()) {
sBuilder.append(line);
}
// 解析XML
Pattern patternname = Pattern.compile( " <Name>.*?</Name> " );
Matcher matchername = patternname.matcher(sBuilder.toString());
if (matchername.find()) {
String name = matchername.group();
TextView lblname = (TextView) findViewById(R.id.lbl_name);
lblname.setText(URLDecoder.decode(name.substring(name
.indexOf( " > " ) + 1 , name.lastIndexOf( " < " ))));
}
Pattern patternage = Pattern.compile( " <Age>.*?</Age> " );
Matcher matcherage = patternage.matcher(sBuilder.toString());
if (matcherage.find()) {
String age = matcherage.group();
TextView lblage = (TextView) findViewById(R.id.lbl_age);
lblage.setText(age.substring(age.indexOf( " > " ) + 1 , age
.lastIndexOf( " < " )));
}
} catch (Exception e) {
String str = e.getMessage();
}
变量xmlInfo就是这里红线圈起来的地方
服务器端:c#代码
[WebMethod]
public Person ShowEntity(Person person)
{
return person;
}
public class Person
{
public string Name { get ; set ; }
public int Age { get ; set ; }
}
public Person ShowEntity(Person person)
{
return person;
}
public class Person
{
public string Name { get ; set ; }
public int Age { get ; set ; }
}