首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android中的Webservice SOAP

Android中的Webservice SOAP
EN

Stack Overflow用户
提问于 2012-05-15 10:24:39
回答 1查看 3.3K关注 0票数 2

我开始在Android中使用webservices,我遵循了本教程:使用Apache Axis2和Eclipse创建来创建和使用webservice。本教程用Java解释客户端应用程序,但在其他教程中,我能够在Android中使用WS,如下所示:

代码语言:javascript
运行
复制
package com.android.webservices;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class AddNumbersWSActivity extends Activity {
/** Called when the activity is first created. */

private String METHOD_NAME = "addTwoNumbers"; // our webservice method name
private String NAMESPACE = "http://sencide.com"; // Here package name in webservice with reverse order.
private String SOAP_ACTION = "http://sencide.com/addTwoNumbers"; // NAMESPACE + method name
private static final String URL = "http://192.168.1.214:8080/axis2/services/FirstWebService?wsdl"; // you must use ipaddress here, don’t use Hostname or localhost

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button addButton = (Button) findViewById(R.id.button1);

    addButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            try
            {
                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
                EditText num1 = (EditText) findViewById(R.id.editText1);
                EditText num2 = (EditText) findViewById(R.id.editText2);
                request.addProperty("firstNumber", Integer.valueOf(num1.getText().toString()));
                request.addProperty("secondNumber", Integer.valueOf(num2.getText().toString()));
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//                  envelope.dotNet = true;
                    envelope.setOutputSoapObject(request);
                    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                    androidHttpTransport.call(SOAP_ACTION,envelope);
                    Object result = envelope.getResponse();
                    System.out.println("Result : " + result.toString());
                    ((TextView) findViewById (R.id.textView4)).setText(result.toString());
                } catch (Exception E) {
                    E.printStackTrace();
                }
            }
        });

    }
}

但是现在我有一些关于在Android中使用WS的问题:

  1. 如我所见,这里不推荐kSOAP2库.我应该继续使用这个库还是需要另一个工具?如果是,是哪一个?
  2. 是否可能只使用服务的WSDL来了解NAMESPACEMETHOD_NAMESOAP_ACTION
  3. 我是否可以使用WSDL自动生成一些代码(比如用于Java应用程序的WSDL2Java工具)?
  4. addProperty(String name, Object value)方法中,我可以使用任意的name或者它应该遵循规则吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-15 10:40:02

Apache是用于Java的,不能在Android平台上工作。Ksoap2库是这方面的替代工具,主要用于使用Android中的webservices。对于你的问题:

1-今天15.5.2012我在这里上看到了4天前的最后一次提交

2-是的,这是可能的。命名空间描述如下:

代码语言:javascript
运行
复制
<wsdl:definitions targetNamespace="http://tempuri.org/">

和方法名称描述如下:

代码语言:javascript
运行
复制
<s:element name="YourMethodName">

SOAP动作一般由名称空间+METHOD_NAME组成;

据我所知,目前还没有一个写得很好的项目。

4-它应该遵循一条规则,必须对WSDL的属性名称和大小写敏感。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10598734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档