Webサービスを使用してAndroidのネットワーク要求

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/u014619545/article/details/81263053

Androidの使用Webサービス多くの記事については、ここで簡単に見ています。

ここで最初に導入され、Webサービスのパッケージ(ダウンロード:Ksoap2.jar)、なぜ石鹸はありますか?長い話を、SOAPプロトコルは、直接あなたのお母さんにお願い。

次のステップは、の使用であります:

バック頼まれていない場合は、:(// IP :?ポート/プロジェクト名/ WS(デフォルトはWSである)/ srvmobile(インターフェース)WSDLのアドレスのhttp)最初は、このようなURLを持っています。

このアドレスは、Webページで開くことができます。

このような例:

 作るのですかと見ます。

Webサービスの名前空間、必要なメソッド名やパラメータのために必要な要求を含む、このページの情報の多くは。

この情報を取得した後、あなたは、データの背景を要求するために、プロジェクトにWebサービスを呼び出すことができます。

方法:

 SoapObject request = new SoapObject(namespace, methodName);
        // 设置需调用WebService接口需要传入的两个参数mobileCode、userId
        request.addProperty("mobileCode", phoneSec);
        request.addProperty("userId", "");

        //创建SoapSerializationEnvelope 对象,同时指定soap版本号(之前在wsdl中看到的)
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER12);
        envelope.bodyOut = request;//由于是发送请求,所以是设置bodyOut
        envelope.dotNet = true;//由于是.net开发的webservice,所以这里要设置为true

        //你的在网页上可以的打开的WSDL_URI
        HttpTransportSE httpTransportSE = new HttpTransportSE(WSDL_URI);
        httpTransportSE.call(null, envelope);//调用

        // 获取返回的数据
        SoapObject object = (SoapObject) envelope.bodyIn;
        // 获取返回的结果
        result = object.getProperty(0).toString();
        Log.d("debug",result);

ネットワークがでパッケージを要求することができます。

以下に、あなたは戻ってに固執することができます:はい、Constants.URL_NAME_SPACEは独自のものを変更すること。

public class WebServiceUtils {
//Constants.URL_NAME_SPACE; 改成你自己的namespace
    private  final String nameSpace = Constants.URL_NAME_SPACE;
    private SoapObject msg;
    private String url;
    private String methodName;
    private OnCallListener listener;

    /**
     * 构造方法
     *
     * @param url        服务地址
     * @param methodName 方法名
     */
    public WebServiceUtils(String url, String methodName) {
        this.url = url;
        this.methodName = methodName;
        msg = new SoapObject(nameSpace, this.methodName);

    }

    /**
     * 得到监听器
     *
     * @return
     */
    public OnCallListener getListener() {
        return listener;
    }

    /**
     * 设置监听器
     *
     * @param listener 监听器
     */
    public void setListener(OnCallListener listener) {
        this.listener = listener;
    }

    /**
     * 执行请求
     */
    public void execute(OnCallListener listener) {
        this.listener = listener;
        new Work().execute();
    }

    /**
     * 请求实现
     *
     * @return
     */
    private String call() {
        SoapObject result = null;
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.bodyOut = msg;
        envelope.dotNet = false;
        HttpTransportSE sendRequest = new HttpTransportSE(url, 10 * 1000);
        envelope.setOutputSoapObject(msg);
        try {
            sendRequest.call(nameSpace + methodName, envelope);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.i("aaa", "webservice错误=" + e.getMessage());
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            Log.i("aaa", "webservice错误=" + e.getMessage());

        }
        try {
            result = (SoapObject) envelope.bodyIn;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            //Utils.log("webservice错误=" + e.getMessage());
        }
        if (result == null) {
            return "";
        } else {
            return result.getProperty(0).toString();
        }

    }

    /**
     * 添加参数
     *
     * @param key   键
     * @param value 值
     */
    public void putParam(String key, String value) {
        msg.addProperty(key, value);
    }

    /**
     * 特殊参数传值
     *
     * @param json 参数json
     */
    public void putParam(JSONObject json) {
        msg.addProperty("strJson", json.toString());
    }

    /**
     * 异步任务线程
     *
     * @author linlei
     */
    class Work extends AsyncTask<String, Integer, String> {

        @Override
        protected String doInBackground(String... arg0) {
            // TODO Auto-generated method stub
            String resut = call();
            return resut;
        }

        @Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            if (listener != null) {
                if (result.equals("")) {
                    listener.onPostFail();
                } else {
                    listener.onPostExecute(result);
                }
            }

        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            if (listener != null) {
                listener.onPreExecute();
            }
        }

    }

    /**
     * 回调接口
     */
    public interface OnCallListener {
        /**
         * 准备执行请求
         */
        void onPreExecute();

        /**
         * 请求执行完成
         *
         * @param result 返回结果
         */
        void onPostExecute(String result);

        /**
         * 请求失败
         */
        void onPostFail();
    }
}

このWebサービスは、あなたのプロジェクトで使用することができます。

次のように使用上のWebserviceUtils:

  WebServiceUtils webServiceUtils = new WebServiceUtils(WSDL_URL, 方法名);         
            String requesttime = String.valueOf(new Date().getTime());
//添加参数
            webServiceUtils.putParam("requesttime", requesttime);
            webServiceUtils.execute(new WebServiceUtils.OnCallListener() {}

、幸せ使用することができます!

おすすめ

転載: blog.csdn.net/u014619545/article/details/81263053