zoukankan      html  css  js  c++  java
  • Android Studio 链接WebServices

    ksoap2android 下载链接:https://pan.baidu.com/s/1miDvwA8 密码:5obq

    webservices准备就绪:

    一、添加引用

    二、新建类GetDataTask继承AsyncTask<传入参数类型,进度单位(一般为Integer),返回结果>

    package com.sdtimoniyor.ticketsystem.WebServices;
    
    import android.os.AsyncTask;
    import android.os.Handler;
    import android.os.Message;
    import android.speech.tts.Voice;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    import com.sdtimoniyor.ticketsystem.R;
    
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;
    
    public class WebServiceHome extends AppCompatActivity {
        private TextView tx;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webservice_home);
            Button showbtn = (Button) findViewById(R.id.webservices_btn);
            tx = (TextView) findViewById(R.id.data);
            tx.setText("yyyyyyyy");
    
            showbtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    new GetDataTask().execute();
                }
            });
        }
    
    
        class GetDataTask extends AsyncTask<String, Integer, String> {
            public String result;
    
            @Override
            protected String doInBackground(String... params) {
                try {
                    result = GetDB();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return result;
            }
    
            @Override
            protected void onPostExecute(String s) {
                tx.setText(s);
            }
    
            public String GetDB() {
                String WebServicesUrl = "http://192.168.0.117/WebService.asmx";   //WebServices地址
                String NameSpace = "http://SDTIWebServices/";                     //命名空间
                String MethodName = "GetTicketListAll";                           //方法名
    
                SoapObject request = new SoapObject(NameSpace, MethodName);

           //设置需调用WebService接口需要传入的两个参数mobileCode、userId
           //request.addProperty("mobileCode", phoneSec);
           //request.addProperty("userId", "");
    SoapSerializationEnvelope envelope
    = new SoapSerializationEnvelope(SoapEnvelope.VER12); envelope.bodyOut = request;//由于是发送请求,所以是设置bodyOut envelope.dotNet = true;//由于是.net开发的webservice,所以这里要设置为true HttpTransportSE httpTransportSE = new HttpTransportSE(WebServicesUrl); try { httpTransportSE.call(null, envelope);//调用 } catch (Exception e) { e.printStackTrace(); } SoapObject object = (SoapObject) envelope.bodyIn;// 获取返回的数据 result = object.getProperty(0).toString();// 获取返回的结果 return result; } } }

    效果展示

    记得添加网络权限

    <uses-permission android:name="android.permission.INTERNET"/>

    说下我遇到的问题

    1.C# 写的基于.net3.5的webservice接口,JsonConvert.SerializeObject()序列化后本地测试(IIS10)没有问题,但是发布到虚拟主机上(IIS6  .net3.5)上后请求接口返回500请求失败,但是自己把数据拼接Json返回却又不会报错,猜测Newtonsoft.Json版本太高,.net版本太低造成。

    2.Android调用时候命名空间写法最后带斜杠,不带有些版本会报错,可以自己试试。

  • 相关阅读:
    centos下安装nethogs
    Nginx+Tomcat反向代理利用certbot实现https
    Mysql主从复制读写分离
    短链接及关键字过滤ac自动机设计思路
    接口访问加密和限频方案
    算法笔记
    redis原理及使用
    memcached原理
    Spring中AOP的两种代理方式(Java动态代理和CGLIB代理-转载
    基于注解的Spring AOP的配置和使用--转载
  • 原文地址:https://www.cnblogs.com/xinyibufang/p/7339599.html
Copyright © 2011-2022 走看看