android studio连接visual studio开发的程序主要分为两部分:第一部分是先在visual studio端开发一个webservice服务,第二部分是在android studio端调用webservice端的服务。

android studio版本:android-studio-ide-141.2178183-windows
visual studio 版本:visual studio 2012

webservice端服务

  1. 文件-》新建-》网站-》Asp .Net空网站

  2. 添加新项

  3. 先择Web服务

  4. 呈现如下图所示状态。在这里可以看到一个HelloWorld()函数,这个函数返回一个字符串”Hello world”,我们在Android studio中要做的是把这个”Hello world”字符串显示在手机上。同时在这里也可以返回数据库中的数据,显示到手机上,可以参考一下http://blog.csdn.net/zhyl8157121/article/details/8169172这篇文章。本文也是参考的这篇文章,只是所用平台不一样。

  5. 这时候执行一下会在浏览器中看到如下画面:

  6. 下面我将这个网站发布一下(有关内容可以百度一下win7 IIS的配置以及网站发布等有关知识)。另外电脑开visual studio 和 android studio两个软件实在是卡,发布完了之后就可以将visual studio关了,直接在浏览器中访问了。

使用android studio 调用Web Service

以下部分内容参考<<疯狂Android讲义>>
1. 新建一个android空项目,最小SDK:API 15: Android 4.0.3

2. Google为Android平台开发Web Service客户端提供了ksoap2-android项目,但这个项目并未直接集成在Android平台中,还需要开发人员自行下载。为Android应用增加ksoap2-android运行请按如下步骤进行:

  1.1 登录http://simpligility.github.io/ksoap2-android/getting-started.html站点,下拉一直到如下界面。(另:再见,Google Code,你好,GitHub)
  
  此时最新为3.5.0,我下载的是3.3.0。
  
  1.2 切换到Project面板
  
将ksoap2JAR包直接复制粘贴到app->libs目录下

   右键Add as Library…,弹出对话框,OK就行了。
  
  
3. 先在activity_main.xml中添加一个按钮。代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示"android:id="@+id/btn1"android:layout_alignParentTop="true"android:layout_alignParentLeft="true"android:layout_alignParentStart="true" />
</RelativeLayout>

design界面如下图所示:

4. MainActivity.java

package com.tudou.demo;import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;import java.io.IOException;public class MainActivity extends AppCompatActivity {private Button btn1;private String result;Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {switch(msg.what){case 0:Toast.makeText(MainActivity.this, "连接服务器失败", Toast.LENGTH_LONG).show();case 1:Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show();default:break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1 = (Button) findViewById(R.id.btn1);btn1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {BtnClick();}});}private void BtnClick() {final  String SERVICE_NS = "http://tempuri.org/";//命名空间final  String SOAP_ACTION = "http://tempuri.org/HelloWorld";//用来定义消息请求的地址,也就是消息发送到哪个操作final  String SERVICE_URL = "http://110.240.192.182/WebService.asmx";//URL地址,这里写发布的网站的本地地址String methodName = "HelloWorld";//创建HttpTransportSE传输对象,该对象用于调用Web Service操作final HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);ht.debug = true;//使用SOAP1.1协议创建Envelop对象。从名称上来看,SoapSerializationEnvelope代表一个SOAP消息封包;但ksoap2-android项目对//SoapSerializationEnvelope的处理比较特殊,它是HttpTransportSE调用Web Service时信息的载体--客户端需要传入的参数,需要通过//SoapSerializationEnvelope对象的bodyOut属性传给服务器;服务器响应生成的SOAP消息也通过该对象的bodyIn属性来获取。final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//实例化SoapObject对象,创建该对象时需要传入所要调用的Web Service的命名空间、Web Service方法名SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);//对dotnet webservice协议的支持,如果dotnet的webserviceenvelope.dotNet = true;//调用SoapSerializationEnvelope的setOutputSoapObject()方法,或者直接对bodyOut属性赋值,将前两步创建的SoapObject对象设为//SoapSerializationEnvelope的付出SOAP消息体envelope.bodyOut = soapObject;new Thread(){@Overridepublic void run() {try {//调用WebService,调用对象的call()方法,并以SoapSerializationEnvelope作为参数调用远程Web Serviceht.call(SOAP_ACTION, envelope);if(envelope.getResponse() != null){//获取服务器响应返回的SOAP消息,调用完成后,访问SoapSerializationEnvelope对象的bodyIn属性,该属性返回一个//SoapObject对象,该对象就代表了Web Service的返回消息。解析该SoapObject对象,即可获取调用Web Service的返回值SoapObject so = (SoapObject) envelope.bodyIn;//接下来就是从SoapObject对象中解析响应数据的过程了result = so.getPropertyAsString(0);Message msg = new Message();msg.what = 1;handler.sendMessage(msg);}else{Message msg=new Message();msg.what=0;handler.sendMessage(msg);}} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();}}}.start();}
}

还有一步非常重要的步骤,就是在AndroidManifest.xml文件中添加对internet的访允许:Android.Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.tudou.demo" ><!--就是下面这一句,可以让程序访问互联网--><uses-permission android:name="android.permission.INTERNET"></uses-permission><application
        android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activity
            android:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
</manifest>
  1. 运行。运行这里需要说一下,我这里是用真机调试的。用真机调试之前先在电脑端开个无线wifi(笔记本直接开个360免费wifi,台式机买个360随身wifi安上就行了),然后用手机连上这个wifi,打开手机浏览器输入你发布网站的地址测试一下,看能不能访问之前发布的页面。我的也就是http://255.255.255.255/WebService.asmx这个地址(这里的IP地址是你网站发布的地址,我这里写的是假地址)。能访问之后,将手机用USB连接到电脑上,打开手机USB调试选项
    (这里最好将电脑上的360手机助手退出去,好几次连接手机失败都是360手机助手的事,好像是占了个端口什么的)。等一会看看左下角Android(1)面板中的(2)处有没有显示你手机。如果如下图所示,则显示连接上了。

    如果(2)处显示的是红色的No Connected Devices,可以在cmd中切换到android-sdk->platform-tools下查看一下,命令为:adb devices。如下图,如果显示为下图所示的样子,证明手机连上了,可以运行了。

    配置一下用USB设备启动。

  2. 程序构建之中(第一次运行的话用的时间稍微会长点,视电脑配置而定)
  3. 程序安装好
  4. 点击屏幕上的“显示”按钮,显示”Hello World, This is my first app”

    这里我将webService中的返回字符串改了。

另外这里有几个问题想说一下:
1. 可能是在android2.3以上的版本中,必须将访问网络的代码写在一个新的线程中。也就是我访问网络的代码ht.call()写入了一个新线程的原因。
2. 如果想知道SOAP协议是什么样子的,可以直接在发布网站上的WebService页面点击一个方法名,在页面下方就可以看到SOAP各版本的请求及响应信息。这里列一个SOAP1.1版本的。

<!--请求-->
POST /WebService.asmx HTTP/1.1
Host: 10.204.92.182
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/HelloWorld"<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><HelloWorld xmlns="http://tempuri.org/" /></soap:Body>
</soap:Envelope>
<!--响应-->
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><HelloWorldResponse xmlns="http://tempuri.org/"><HelloWorldResult>string</HelloWorldResult></HelloWorldResponse></soap:Body>
</soap:Envelope>

OK,到这里就完了。^_^

android studio + .Net webservice 连接相关推荐

  1. android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法

    本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...

  2. Android Studio与Mysql连接的中文乱码问题

    Android Studio与Mysql连接的中文乱码???问题(折磨我一天) 网上能搜到的方法几乎都试过了,如果你还是无法解决,可以试试我的,说不定就成功了 正确写法 url="jdbc: ...

  3. Android Studio 用USB连接到真机调试方法

    Android Studio 用USB连接到真机调试方法 1.在Android Studio中下载必要文件 1-1 安装Google USB driver 1-2 安装手机中对应Android版本的S ...

  4. android工程怎么连手机,android studio与手机连接调试步骤详解

    android studio 版本不同连接手机方式有细微的不同,主要方式相似.介绍主要分手机和电脑两部分介绍. 一.手机部分 1.手机端下载一个"一键root权限获取",在安装的过 ...

  5. Android Studio 使用 WIFI 连接手机

    Android Studio 使用 WIFI 连接手机 手机连线经常接触不良, 连上又断又连上又断的时候, 只要确保有一点时间让你连上 adb wifi, 就不用再听到那烦人的声音. 注意手机跟电脑必 ...

  6. Android Studio使用webservice远程访问数据库SQL Server 2008 R2

    首先说一下背景,由于目前个人自学Android Studio,参考度娘实现连接DB的方式,总结出目前主流的两种方式: 1)使用jtds直接访问DB数据库(参考:https://blog.csdn.ne ...

  7. Android studio Github 断开连接

    http://blog.csdn.net/agoodcoolman/article/details/50562301 使用软件:Android studio  svn:Github 从github直接 ...

  8. Android Studio 通过wify连接手机调试

    Android Studio调试手机应用,最常用的就是直接USB连接,打开调试模式,这就不说了. 要说的是,有时候特殊情况,需要通过wify来连接手机调试,方法如下: 手机通过USB线连接到电脑,然后 ...

  9. android studio 通过wifi连接手机调试

    <div id="article_content" class="article_content clearfix csdn-tracking-statistics ...

最新文章

  1. 在不影响配置下,清除netscreen密码
  2. TF (transform) in ROS
  3. 微生物组-宏基因组分析第8期(报名直播课免费参加线下2020.7)
  4. Linux下Java Font 中文字体不显示
  5. 比特币官网管理者Cobra认可BCH支付属性
  6. idea 创建 简单的scala maven项目
  7. spring roo_使用Spring Roo进行快速云开发–第1部分:Google App Engine(GAE)
  8. List、Map、Set之间的联系与区别:
  9. 【分享】如何管理焦虑情绪
  10. java utf8 简繁转换 类库_在Java中进行中文繁体简体转换,基于OpenCC(Open Chinese Convert)方案...
  11. default在php定义什么,default(T)的含义
  12. CentOS 6.7安装gcc4.8.2
  13. 幼儿园编程机器人课程介绍
  14. hbase的快速下载
  15. Linux的nc,局域网文件互传
  16. 第22章:针对Cloze Tests基于Attention机制的的MRC领域开山之作:Teaching Machines to Read and Comprehend架构设计及完整源码实现
  17. 计算机里的word怎么重装,word能卸载重装吗 word卸载重装
  18. 浙江省中小学信息技术课 9 月换新教材,大数据人工智能占 80%
  19. CSDN博客里面挂广告的推荐方法
  20. 桌球游戏java_JAVA 第一个小项目 桌球游戏 (桌球小程序练习)

热门文章

  1. 今日油价 麦谈帮API数据接口
  2. 伊苏比的梦幻之旅(四)比赛题解
  3. ssh登陆到别的主机上,ssh登陆被禁止
  4. Layui获取ID,点击加载表格
  5. dell R730 服务器做Raid0
  6. Python基础知识:变量和引用
  7. View.VISIBLE、INVISIBLE、GONE的区别
  8. 攻防世界-unseping
  9. python求一年的第几天是排卵期_python怎么判断某一天是一年中的第几天
  10. c# 避开淘宝助理检测上传宝贝描述含其他店铺图片的小工具【原】