XML数据格式为:
<xml>
<ToUserName><![CDATA[xxx]]></ToUserName>
<FromUserName><![CDATA[xxx]]></FromUserName>
<CreateTime>1234567</CreateTime>
<Content><![CDATA[xxx]]></Content>
</xml>
public class MainActivity extends Activity {
final String data = "<xml> <ToUserName><![CDATA[xxx]]></ToUserName><FromUserName><![CDATA[xxx]]></FromUserName><CreateTime>1234567</CreateTime><Content><![CDATA[xxx]]></Content></xml>";
final String url = "xxxxxx";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
httpRequest();
}
private void httpRequest() {
StringEntity body = null;
try {
body = new StringEntity(data,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
AsyncHttpClient asyncClient = new AsyncHttpClient(true, 80, 443);
asyncClient.addHeader("Content-Type", "application/xml");
asyncClient.addHeader("Accept", "application/xml");
asyncClient.post(null, url, body, "application/xml",
new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
String response = new String(responseBody);
Log.e("123","onSuccess(). response: "+ response);
parseXML(response);
}
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
String response = new String(responseBody);
Log.e("123","onFailure(). response: "+ response);
}
});
}
XMLPullParser方法解析获取到的XML格式的结果:
public String parseXML(String string) {
String content = null;
String toUserName = null;
XmlPullParser parser = Xml.newPullParser();
try {
parser.setInput(new ByteArrayInputStream(string.getBytes()),
"UTF-8");
int event = parser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_TAG:
if ("ToUserName".equals(parser.getName())) {
toUserName = parser.nextText();
Log.e("toUserName", "a:toUserName=" + toUserName);
event = parser.next();
} else if ("Content".equals(parser.getName())) {
content = parser.nextText();
Log.e("parseXML", "a:content=" + content);
IraylinkSpeak.getInstance(context).speak(content);
event = parser.next();
}
break;
case XmlPullParser.END_TAG:
break;
}
event = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return content;
}