簡體   English   中英

Android:如何在wsdl請求中將數組作為參數發送

[英]Android : how to send array as parameter in wsdl request

我想將數據從android應用程序發送到php web服務,web服務得到以下參數:

Type       Name            Description
string     sessionId       Session ID
array      customerData    Array of customerCustomerEntityToCreate 

我使用kso​​ap2庫,在此代碼中我傳遞了sessionId,但我不知道如何將數組設置為wsdl請求的參數

                env = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                env.dotNet = false;
                env.xsd = SoapSerializationEnvelope.XSD;
                env.enc = SoapSerializationEnvelope.ENC;

                SoapObject request = new SoapObject(NAMESPACE,
                        "createCustomer");
                request.addProperty("sessionId", "1234567890");

                env.setOutputSoapObject(request);
                androidHttpTransport = new HttpTransportSE(URL);
                androidHttpTransport.debug = true;

                // (new MarshalHashtable()).register(env);
                androidHttpTransport.call("", env);
                result = env.getResponse();

                Log.d("result", result.toString());

我發現此php示例用於通過php代碼使用網絡服務:

$client = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$session = $client->login('apiUser', 'apiKey');
$result = $client->customerCustomerCreate($session, array('email' => 'customer-  mail@example.org', 'firstname' => 'Dough', 'lastname' => 'Deeks', 'password' => 'password', 'website_id' => 1, 'store_id' => 1, 'group_id' => 1));
var_dump ($result);

我如何用Java做到這一點? 謝謝

步驟1 :在ksoap或ksoap2中,不直接支持發送Array。 因此您可以使用方法名稱創建SoapObject(需要創建數組)

SoapObject object= new SoapObject(NAMESPACE,"shoppingCartProductEntity");
object.addProperty("product_id","886");
object.addProperty("sku","ABC 456-Black-10");
         and more parameters.....

步驟2 :然后創建arrayType方法(可選,取決於您的WSDL)並將此soapObject作為屬性添加到該數組Object

SoapObject EntityArray = new SoapObject(NAMESPACE, "shoppingCartProductEntityArray");
EntityArray.addProperty("products",object);

步驟3 :最后將數組添加到您的主Soap調用中

SoapObject request = new SoapObject(NAMESPACE,"shoppingCartProductAdd");
request.addProperty("sessionId", sessionId);
request.addProperty("quoteId", cartId);
request.addProperty("products",EntityArray); //ADDING ARRAY HERE AS A PEOPERTY
env.setOutputSoapObject(request);
androidHttpTransport.call(NAMESPACE +"/shoppingCartProductAdd ", env);
resultSoap = env.getResponse();

注意:步驟取決於您的WSDL,有時您可以直接添加第一步對象作為參數,這取決於WSDL。

SoapObject request = new SoapObject(NAMESPACE,"login");

request.addProperty("username", "*****");
request.addProperty("apiKey", "********");
env.setOutputSoapObject(request);

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(" ", env);
Object result = env.getResponse();

Log.d("This is the New SessionId", result.toString());

String f_name=fname.getText().toString();
String l_name=lname.getText().toString();
String e_mail=email.getText().toString();
String c_pass=cpass.getText().toString();
//calling the soap api method "customerCustomerCreate"
SoapObject res=new SoapObject(NAMESPACE, METHODNAME);
res.addProperty("email",e_mail);
res.addProperty("firstname",f_name);
res.addProperty("lastname",l_name);
res.addProperty("password",c_pass);
res.addProperty("website_id", 1);
res.addProperty("store_id",1);
res.addProperty("Group_id",1);

String sessionId = result.toString();
request = new SoapObject(NAMESPACE, METHODNAME);
//adding the propery such as sessionId and Customerdata for request
request.addProperty("sessionId",sessionId );
request.addProperty("customerData",res);
env.setOutputSoapObject(request);
androidHttpTransport.debug=true;
androidHttpTransport.call("", env);
//getting the response which is the customerId
result=env.getResponse();

Log.d("Customer Id", result.toString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM