android调用web
① android怎样调用webService
使用Ksoup.jar包可以实现webservice的调用
参考代码:
String result = null;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.bodyOut = soapObject;
String endPoint = 地址后缀//如WebService/AppService.asmx
HttpTransportSE transportSE = new HttpTransportSE(endPoint);
SoapObject object = null;
transportSE.call(地址 + soapObject.getName(),
envelope);
object = (SoapObject) envelope.bodyIn;
result = object.getProperty(0).toString();
附上ksoup包
② Android 使用KSOAP2调用WebService
android 利用ksoap2方式连接webservice(2010-04-16 16:36:25)转载标签:androidksoap2webserviceit 分类:Android
利用J2SE的ksoap2标准,我也来做一个山寨版本的android连接webservice。因为soap封装的关系,android application在接收到数据后不能够正确的按照J2SE的标准来获取。
在运用之前,我们先要引导两个jar进入工程的buildpath
这两个jar包都可以在网上查到下载,引导完后再做一项准备工作。弄清楚已发布的webservice的地址,以及封装的方式。比如:
webservice接口: http://192.168.0.2:8080/axis2/services/Manager?wsdl (顺便说明一下,在android当中,不能写localhost,必须写清楚PC机当前的网络IP)
webservice封装: http://ws.apache.org/axis2
都了解了过后,说明已经做好准备了。
下面就介绍一下android如何获取webservice封装数据。。
引入ksoap2中以封装好的类
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
在类中定义webservice的接口地址以及解析方式并且定义要调用的webservice中的函数
private static final String URL = " http://192.168.0.2:8080/axis2/services/Manager?wsdl";
private static final String NAMESPACE = " http://ws.apache.org/axis2";
private static final String METHOD_NAME = "GetMyFriends";
这个信息我们可以在webservice中查到
<xs:element name="GetMyFriends">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="userId" type="xs:int"/>
<xs:element minOccurs="0" name="password" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
接下来开始做对webservice请求数据的工作,请求webservice函数以及封装要用的两个参数(userId和password)
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("userId", "123456");
request.addProperty("password", "test");
之后我们给定义发送数据的信封的封装格式
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11 );
发出请求
envelope.setOutputSoapObject(request);
AndroidHttpTransport aht = new AndroidHttpTransport(URL);
aht.call(null, envelope);
接着就可以定义一个SoapObject类型的实例去获取我们返回来的数据
SoapObject so = (SoapObject) envelope.bodyIn;
这里如果是返回来的数据只有一行并且只有一个值,比如验证函数,返回boolean类型的话,操作比较简单,String getReturn= so.getProperty("return"); 这个getReturn就是你要获取的值。
但是如果返回来是多行的值的话,这个方法就不行了,我们必须对返回来的信息做一些解析。我曾试过用J2SE的标准方式来获取,但是会报错,最主要的可能是他的方式在android当中不能使用。所以在这里我用了正则表达式这种方式来进行数据的解析,我们先来看一下他返回的数据的结构是什么情况。
GetMyFriendsResponse{return=FriendsMessage{ <br>permitList=anyType{nickName=我爱罗; singnature=null; userId=2; }; permitList=anyType{nickName=jack; singnature=null; userId=1004; }; permitList=anyType{nickName=admin; singnature=leo_admin; userId=1001; };};}
简单看他很想Json结构,但是确不是。。。
就目前的解决方式,我只是通过规律来进行了正则表达式的解析:如解析上面的内容。
//首先取得permitList(好友)的个数
String testPattern = "permitList";
int resultlength = result.length();
cresult = cresult.replace(testPattern, "");
int lastlength = (resultlength - cresult.length()) / testPattern.length();
//取得每个permitList中的值。
String LoginReturn="", pattern="nickName=.*?;\\s*singnature=.*?;\\s*userId=.*?;";
//动态生成String 数组,存储每个好友的信息
String[] GetFinalReturn = new String[lastlength];
for (int i=0;i<lastlength;i++){
LoginReturn = result.replaceFirst("^.*("+pattern+").*$", "$1");
GetFinalReturn[i] = LoginReturn;
result = result.replace(LoginReturn,"");
}
这个数组里面存储的格式就是nickName=admin; singnature=leo_admin; userId=1001;
这样以来,我们可以根据"="和";"两个符号之间做split操作就可以得到数据。
好了,到此连接webservice和解析返回来的数据的工作就做完了,虽然这个方式看起来很复杂,但是目前来说,用ksoap2方式来连接webservice暂时还没有找到更有效的解决方式。。
③ android调用webservice接口都有什么方式
android调用webservice接口的方法是利用第三方jar包完成。
1、首先如果想在Android平台上调用WebService需要依赖于第三方类库:ksoap2 而在Android平台上,使用的是ksoap2 Android,一个高效,轻量级的SOAP开发包
④ android下打开Web浏览器的几种常见的方法
android下打开Web浏览器的几种常见的方法如下:
一。通过意图实现浏览
//通过下述方法打开浏览器
java">privatevoidopenBrowser(){
//urlText是一个文本输入框,输入网站地址
//Uri是统一资源标识符
Uriuri=Uri.parse(urlText.getText().toString());
Intentintent=newIntent(Intent.ACTION_VIEW,uri);
startActivity(intent);
}
注意:输入URL时,不要忘记“http://”部分。
二。利用视图打开网页,是通过调用WebKit浏览器引擎提供的WebView实现的。
具体源代码如下:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<LinearLayoutandroid:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<EditText
android:layout_width="240dp"
android:layout_height="wrap_content"
android:id="@+id/etWebSite"
android:hint="输入网址"
android:singleLine="true"
android:layout_marginRight="5dp"
/>
<Button
android:id="@+id/searchBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索"
android:layout_marginRight="5dp"
/>
</LinearLayout>
<LinearLayoutandroid:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/backBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上一页"
android:layout_marginRight="5dp"
/>
<Button
android:id="@+id/nextBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一页"
android:layout_marginRight="5dp"
/>
</LinearLayout>
<WebViewandroid:id="@+id/webView1"android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>
</LinearLayout>
/res/src/com.myandroid
packagecom.myandroid;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.webkit.URLUtil;
importandroid.webkit.WebView;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
{
privateButtonschBtn,backBtn,nextBtn;
privateWebViewwebView;
privateEditTextmText;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
schBtn=(Button)findViewById(R.id.searchBtn);
mText=(EditText)findViewById(R.id.etWebSite);
webView=(WebView)findViewById(R.id.webView1);
backBtn=(Button)findViewById(R.id.backBtn);
nextBtn=(Button)findViewById(R.id.nextBtn);
schBtn.setOnClickListener(newView.OnClickListener(){
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
//设置可以使用Javascript
webView.getSettings().setJavaScriptEnabled(true);StringstrURI=mText.getText().toString();
//检测网站的合法性
if(URLUtil.isNetworkUrl(strURI)){
webView.loadUrl(strURI);
Toast.makeText(WebViewActivity.this,strURI,Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(WebViewActivity.this,"输入非法网站 "+strURI,Toast.LENGTH_SHORT).show();
}
}
});
backBtn.setOnClickListener(newView.OnClickListener(){
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
if(webView.canGoBack()){
webView.goBack();
}
}
});
nextBtn.setOnClickListener(newView.OnClickListener(){
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
if(webView.canGoForward()){
webView.goForward();
}
}
});
}
}
同时还要在AndroidManifest.xml中添加访问因特网的权限:
<uses-permission android:name="android.permission.INTERNET"/>
⑤ 如何利用Chrome devTools调试android手机上的web网站
利用Chrome devTools调试android手机上的web网站方法:
操作之前先准备好以下步骤:1、在Android手机上安装Chrome(Chrome for Android)2、电脑系统安装了最新版的Chrome 3、Android手机装了USB驱动
一、安装Android SDK
下载Android SDK,地址:http://developer.android.com/sdk/index.html,本人的机器是windows,下载的文件为adt-bundle-windows-x86,解压并释放到D:/soft/android/adt(你也可以选择其他路径)
二、允许Android 手机启用USB调试
1、android系统设置:“设置”》“开发人员选项”》“USB调试”;
2、手机上Chrome浏览器设置:打开Chrome浏览器,点击左下角菜单按键,“设置”》“开发者工具”》“启用USB网页调试”
三、运行Android SDK
1、设置环境变量:右击“我的电脑”》“属性”》“高级”》“环境变量”》编辑“PATH”变量值,在末尾添加“;D:softandroidadtsdkplatform-tools”
2、运行adb
打开cmd,输入如下命令:
利用Chrome devTools调试android手机上的web网站成功了.
⑥ android开发怎么调用浏览器打开一个链接
在安卓代码中调用浏览器来打开相应的网页,一般有以下几种方式
调用默认浏览器。
其他浏览器。
自定义一个简单的WebView浏览器。
【原理】
主要是通过代码进行调用已有或者未有的浏览器进行打开相应的网页进行浏览。
【详细实现步奏】
一.调用默认浏览器
优缺点:部分手机可能连默认的浏览器都没有。
Intentintent=newIntent();
//Intentintent=newIntent(Intent.ACTION_VIEW,uri);
intent.setAction("android.intent.action.VIEW");
Uricontent_url=Uri.parse("此处填链接");
intent.setData(content_url);
startActivity(intent);
二.其他浏览器,制定打开
缺点:必须知道打开的浏览器的包名,大部分用户可能没有安装这些浏览器
Intentintent=newIntent();
intent.setAction("android.intent.action.VIEW");
Uricontent_url=Uri.parse("此处填链接");
intent.setData(content_url);
intent.setClassName("浏览器包名","浏览器首页");
startActivity(intent);
三.自定义一个简单的WebView浏览器
优缺点:推荐使用,不必担心手机上是否有浏览器。
mWebView=(WebView)findViewById(R.id.baseweb_webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(newWebViewClient());
WebViewmyWebView=(WebView)findViewById(R.id.webview);
myWebView.loadUrl("xxx.com");
【最后】
每种方法根据个人需要进行选用,没其他特别因素推荐使用第三种方案。
⑦ Android 使用KSOAP2调用axis2+rampart的webservice
使用KSOAP2调用WebService 按如下6步来调用WebService的方法。
1. 指定WebService的命名空间和调用的方法名,代码如下:
SoapObject request = new SoapObject("http://service", "getName");
SoapObject类的第1个参数表示WebService的命名空间,可以从WSDL文档中找到WebService的命名空间。第2个参数表示要调用的WebService方法名。
2. 设置调用方法的参数值,这一步是可选的,如果方法没有参数,可以省略这一步。设置方法的参数值的代码如下:
request.addProperty("param1", "value1");
request.addProperty("param2", "value2");
要注意的是,addProperty方法的第1个参数虽然表示调用方法的参数名,但该参数值并不一定与服务端的WebService类中的方法参数名一致,只要设置参数的顺序一致即可。
3. 生成调用WebService方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述,代码如下:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
创建SoapSerializationEnvelope对象时需要通过SoapSerializationEnvelope类的构造方法设置SOAP协 议的版本号。该版本号需要根据服务端WebService的版本号设置。在创建SoapSerializationEnvelope对象后,不要忘了设置 SoapSerializationEnvelope类的bodyOut属性,该属性的值就是在第1步创建的SoapObject对象。
4. 创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL,代码如下:
HttpTransportSE ht =
new HttpTransportSE("http://192.168.17.156:8080/axis2/services/SearchProctService?wsdl");
5. 使用call方法调用WebService方法,代码如下:
ht.call(null, envelope);
call方法的第1个参数一般为null,第2个参数就是在第3步创建的SoapSerializationEnvelope对象。
6. 使用getResponse方法获得WebService方法的返回结果,代码如下:
SoapObject soapObject = (SoapObject) envelope.getResponse();