gpt4 book ai didi

android - 在 Android 中显示 Soap Response(数组)

转载 作者:行者123 更新时间:2023-11-29 18:14:01 26 4
gpt4 key购买 nike

我研究了很多并试图解决它,但我面临着在屏幕上显示响应的问题。

Soap 服务代码是:

POST /ws1.asmx HTTP/1.1
Host: www.xyz.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://xyx.com/webservices/LoadServices"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<LoadServices xmlns="http://xyz.com/webservices/" />
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<LoadServicesResponse xmlns="http://xyz.com/webservices/">
<LoadServicesResult>
<anyType />
<anyType />
</LoadServicesResult>
</LoadServicesResponse>
</soap:Body>
</soap:Envelope>

我在 Java 中使用 2 个类。这是它的代码。

首先我要添加 Category.java 代码:

import java.util.Hashtable;
import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;

import android.util.Log;

public class Category implements KvmSerializable
{
public int CompanyId; //0
public int ServiceId; //1
public String ServiceMessage; //2
public int ServiceCategoryId; //3
public boolean IsVisibleForUser; //4
public String ServiceName; //5
public String Serviceform; //6
public char IsActive; //7
public String ServiceImage; //8
public String ServiceCode; //9
public String RequestFulfilledMsg; //10
public String ToDoPendingRequest; //11
public String CompanyName; //12
public String ServiceCategoryName; //13
public String ThumbnailImage; //14
public String ServiceDescription; //15





public Category()
{}

public Category(int coid, int servId, int scid)
{
CompanyId = coid;
ServiceId = servId;
ServiceCategoryId = scid;

}


public Object getProperty(int arg0)
{
Log.i("Category", "msg:getProperty");
switch(arg0)
{
case 0:
return CompanyId;

case 1:
return ServiceId;

case 3:
return ServiceCategoryId;

}

return null;
}




public int getPropertyCount()
{
Log.i("Category", "msg:getPropertyCount(3)");
return 3;
}

public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info)
{
Log.i("Category", "msg:getPropertyInfo");
switch (index)
{
case 0:
info.type = PropertyInfo.INTEGER_CLASS;
info.name = "CompanyId";
break;

case 1:
info.type = PropertyInfo.INTEGER_CLASS;
info.name = "ServiceId";
break;

case 3:
info.type = PropertyInfo.INTEGER_CLASS;
info.name = "ServiceCategoryId";
break;


default:
break;
}

}


public void setProperty(int index, Object value)
{
Log.i("Category", "msg:SetProperty");
switch (index)
{

case 0:
CompanyId = Integer.parseInt(value.toString());
break;

case 1:
ServiceId = Integer.parseInt(value.toString());
break;

case 3:
ServiceCategoryId = Integer.parseInt(value.toString());
break;


default:
break;
}

}

}

现在是根 Activity 的代码,即 WebServiceEx.java

public class WebServiceEx extends Activity
{
private final String NAMESPACE = "http://xyz.com/webservices/";
private final String URL = "http://www.abc.com/ws1.asmx";
private final String SOAP_ACTION = "http://xyz.com/webservices/LoadServices";
private final String METHOD_NAME = "LoadServices";

//public Array array = null;
//String arr[] = null;

TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
tv = new TextView(this);

LoadSoapService();
setContentView(tv);
}


private void LoadSoapService()
{
Log.i("WebService", "msg:soap enter");
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);


Category C = new Category();
C.ServiceCategoryId = 1;
Log.i("WebService", "msg:Category");

Log.i("WebService", "msg:Property");

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);

Log.i("WebService", "msg:Request");

envelope.addMapping(NAMESPACE, "Category", new Category().getClass());

HttpTransportSE transportSE = new HttpTransportSE(URL);

Log.i("WebService", "msg:try_out");
try
{
Log.i("WebService", "msg:try+in");
transportSE.call(SOAP_ACTION, envelope);
Log.i("WebService", "msg:SoapObject");
SoapObject response = (SoapObject)envelope.getResponse(); /**error here, wents to exception **/

Log.i("WebService", "Response");

Log.i("WebSrv", response.toString());


C.ServiceCategoryId = Integer.parseInt(response.getProperty(3).toString());

tv.setText(" "+C.ServiceCategoryId);


}
catch (Exception e)
{
e.printStackTrace();
Log.i("WebService", "msg:Exception error");
}

}
}

我已经在出现问题的地方添加了评论,此外,如果我遗漏了什么,请告诉我,因为一切都在你面前。

我已经将 ksoap2 添加到外部 Jar 并添加了 Internet 权限,但我遇到的问题只是一个空白屏幕。

希望得到一些想法,

谢谢,竖琴。

最佳答案

如果我是你我会做

private void LoadSoapService()

这个方法如下:

private String LoadSoapService()

返回 Integer.parseInt(response.getProperty(3).toString());并将 TextViews 文本设置为

tv.setText(LoadSoapService);

关于android - 在 Android 中显示 Soap Response(数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9176491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com