我是 android 开发的新手。我得到了 SOAP 响应,但我不知道如何解析 SOAP 响应的值。实际上,我正在尝试从响应中解析字符串“Emotion”。请在此处找到我的 XML 文档和响应http://letsmote.com:8087/EmoteSAPI.asmx?op=GetEmotionList 这是我的代码
public class EmotionList extends Activity {
public final String NAMESPACE = "http://tempuri.org";
public final String URL = "http://letsmote.com:8087/EmoteSAPI.asmx";
public final String SOAP_ACTION = "http://tempuri.org/GetEmotionList";
public final String METHOD_NAME = "GetEmotionList";
//SharedPreferences sp;
String[] Emotionlist;
EditText edt;
Button GetEmotion;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_emotion_list);
// TODO Auto-generated method stub
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
Element[] header = new Element[1];
header[0] = new Element().createElement("http://tempuri.org/","SecurityInfo");
Element APIkey = new Element().createElement(null,"n0:APIKey");
APIkey.addChild(Node.TEXT,"BcodTestAPI");
header[0].addChild(Node.ELEMENT,APIkey);
Element user = new Element().createElement(null,"n0:UserID");
user.addChild(Node.TEXT,"bcod");
header[0].addChild(Node.ELEMENT,user);
Element passid = new Element().createElement(null,"n0:Password");
passid.addChild(Node.TEXT, "bcod");
header[0].addChild(Node.ELEMENT, passid);
// add header to envelope
envelope.headerOut = header;
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
//SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
Log.e("myApp",envelope.getResponse().toString());
SoapObject response = (SoapObject) envelope.getResponse();
Log.e(" ","----------Response----------"+response.toString());
System.out.println("===Response===");
SoapObject CinemaCode;
SoapObject pii = (SoapObject)response.getAttribute("Emotion");
Log.e(" ","----------Response1----------"+response.toString());
CinemaCode = (SoapObject)pii.getProperty(1);
String []categories = new String [CinemaCode.getPropertyCount()];
String []Emotions = new String[1000];
for (int i = 0; i < categories.length; i++)
{
SoapObject list = (SoapObject)CinemaCode.getProperty(i);
Emotions[i] = list.getProperty(2).toString();
Log.e("","Emotions Are: = "+Emotions[i]);
}
}catch(Exception e)
{
}
}
这是我得到的回应....
09-25 11:38:20.357: E/(626): ----------响应---------anyType{Emotions=anyType{Emotion=Joy; 颜色=#9370DB; EmotionId=17;IsHappyEmotion=真;}; 情绪=任何类型{情绪=自由;颜色=#800080; EmotionId=12;IsHappyEmotion=真;}; 情感=任何类型{情感=爱;颜色=#8B008B; EmotionId=19;IsHappyEmotion=真;}; 情绪=任何类型{情绪=激情;颜色=#008080; EmotionId=21;IsHappyEmotion=真;}; 情绪=任何类型{情绪=热情;颜色=#B8860B; EmotionId=10;IsHappyEmotion=真;}; 情绪=anyType{情绪=乐观;颜色=#696969; EmotionId=20;IsHappyEmotion=真;}; 情绪=anyType{情绪=希望;颜色=#98F5FF; EmotionId=15;IsHappyEmotion=真;}; 情绪=任何类型{情绪=满足;颜色=#0000FF; EmotionId=4;IsHappyEmotion=真;}; 情绪=任何类型{情绪=无聊;颜色=#8A2BE2; EmotionId=3; IsHappyEmotion=假;}; 情绪=anyType{情绪=悲观;颜色=#48D1CC; EmotionId=22;IsHappyEmotion=真;}; 情绪=任何类型{情绪=沮丧;颜色=#FFC0CB; EmotionId=24;IsHappyEmotion=假;}; 情绪=anyType{情绪=失望;颜色=#D2691E; EmotionId=7;IsHappyEmotion=假;}; 情绪=任何类型{情绪=怀疑;颜色=#CAFF70; EmotionId=9;IsHappyEmotion=假;}; 情绪=anyType{情绪=担心;颜色=#008000; EmotionId=23;IsHappyEmotion=假;}; 情绪=anyType{情绪=责备;颜色=#7CFC00; EmotionId=2; IsHappyEmotion=假;}; 情绪=任何类型{情绪=沮丧;颜色=#ADFF2F; EmotionId=8; IsHappyEmotion=假;}; 情绪=任何类型{情绪=嫉妒;颜色=#006400; EmotionId=16;IsHappyEmotion=假;}; 情绪=任何类型{情绪=内疚;颜色=#FFFF00; EmotionId=13;IsHappyEmotion=假;}; 情绪=任何类型{情绪=孤独;颜色=#BDB76B; EmotionId=18;IsHappyEmotion=假;}; 情绪=任何类型{情绪=恐惧;颜色=#FF8C00; EmotionId=11;IsHappyEmotion=假;}; 情绪=任何类型{情绪=愤怒;颜色=#FF0000; EmotionId=1;IsHappyEmotion=假;}; 情绪=任何类型{情绪=抑郁;颜色=#8B0000; EmotionId=5;IsHappyEmotion=假;}; 情绪=任何类型{情绪=绝望;颜色=#CD5C5C; EmotionId=6;IsHappyEmotion=假;}; 情绪=anyType{情绪=仇恨;颜色=#800000; EmotionId=14;IsHappyEmotion=假;}; } 情绪=anyType{情绪=仇恨;颜色=#800000; EmotionId=14;IsHappyEmotion=假;}; } 情绪=anyType{情绪=仇恨;颜色=#800000; EmotionId=14;IsHappyEmotion=假;}; }
提前致谢