android studio + .Net webservice 连接
android studio连接visual studio开发的程序主要分为两部分:第一部分是先在visual studio端开发一个webservice服务,第二部分是在android studio端调用webservice端的服务。
android studio版本:android-studio-ide-141.2178183-windows
visual studio 版本:visual studio 2012
webservice端服务
文件-》新建-》网站-》Asp .Net空网站
添加新项
先择Web服务
呈现如下图所示状态。在这里可以看到一个HelloWorld()函数,这个函数返回一个字符串”Hello world”,我们在Android studio中要做的是把这个”Hello world”字符串显示在手机上。同时在这里也可以返回数据库中的数据,显示到手机上,可以参考一下http://blog.csdn.net/zhyl8157121/article/details/8169172这篇文章。本文也是参考的这篇文章,只是所用平台不一样。
这时候执行一下会在浏览器中看到如下画面:
下面我将这个网站发布一下(有关内容可以百度一下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>
- 运行。运行这里需要说一下,我这里是用真机调试的。用真机调试之前先在电脑端开个无线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设备启动。
- 程序构建之中(第一次运行的话用的时间稍微会长点,视电脑配置而定)
- 程序安装好
- 点击屏幕上的“显示”按钮,显示”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 连接相关推荐
- android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法
本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...
- Android Studio与Mysql连接的中文乱码问题
Android Studio与Mysql连接的中文乱码???问题(折磨我一天) 网上能搜到的方法几乎都试过了,如果你还是无法解决,可以试试我的,说不定就成功了 正确写法 url="jdbc: ...
- Android Studio 用USB连接到真机调试方法
Android Studio 用USB连接到真机调试方法 1.在Android Studio中下载必要文件 1-1 安装Google USB driver 1-2 安装手机中对应Android版本的S ...
- android工程怎么连手机,android studio与手机连接调试步骤详解
android studio 版本不同连接手机方式有细微的不同,主要方式相似.介绍主要分手机和电脑两部分介绍. 一.手机部分 1.手机端下载一个"一键root权限获取",在安装的过 ...
- Android Studio 使用 WIFI 连接手机
Android Studio 使用 WIFI 连接手机 手机连线经常接触不良, 连上又断又连上又断的时候, 只要确保有一点时间让你连上 adb wifi, 就不用再听到那烦人的声音. 注意手机跟电脑必 ...
- Android Studio使用webservice远程访问数据库SQL Server 2008 R2
首先说一下背景,由于目前个人自学Android Studio,参考度娘实现连接DB的方式,总结出目前主流的两种方式: 1)使用jtds直接访问DB数据库(参考:https://blog.csdn.ne ...
- Android studio Github 断开连接
http://blog.csdn.net/agoodcoolman/article/details/50562301 使用软件:Android studio svn:Github 从github直接 ...
- Android Studio 通过wify连接手机调试
Android Studio调试手机应用,最常用的就是直接USB连接,打开调试模式,这就不说了. 要说的是,有时候特殊情况,需要通过wify来连接手机调试,方法如下: 手机通过USB线连接到电脑,然后 ...
- android studio 通过wifi连接手机调试
<div id="article_content" class="article_content clearfix csdn-tracking-statistics ...
最新文章
- 在不影响配置下,清除netscreen密码
- TF (transform) in ROS
- 微生物组-宏基因组分析第8期(报名直播课免费参加线下2020.7)
- Linux下Java Font 中文字体不显示
- 比特币官网管理者Cobra认可BCH支付属性
- idea 创建 简单的scala maven项目
- spring roo_使用Spring Roo进行快速云开发–第1部分:Google App Engine(GAE)
- List、Map、Set之间的联系与区别:
- 【分享】如何管理焦虑情绪
- java utf8 简繁转换 类库_在Java中进行中文繁体简体转换,基于OpenCC(Open Chinese Convert)方案...
- default在php定义什么,default(T)的含义
- CentOS 6.7安装gcc4.8.2
- 幼儿园编程机器人课程介绍
- hbase的快速下载
- Linux的nc,局域网文件互传
- 第22章:针对Cloze Tests基于Attention机制的的MRC领域开山之作:Teaching Machines to Read and Comprehend架构设计及完整源码实现
- 计算机里的word怎么重装,word能卸载重装吗 word卸载重装
- 浙江省中小学信息技术课 9 月换新教材,大数据人工智能占 80%
- CSDN博客里面挂广告的推荐方法
- 桌球游戏java_JAVA 第一个小项目 桌球游戏 (桌球小程序练习)