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调用时候命名空间写法最后带斜杠,不带有些版本会报错,可以自己试试。

转载于:https://www.cnblogs.com/xinyibufang/p/7339599.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值