初学android,这个问题困扰了多天,在搜索引擎及论坛各位高手的帮助下,现在终于给搞定了,在这里分享给大家,希望对大家有所帮助!(其实本来是尝试用SOAP协议的,试了n天,无果,无奈又只能回到http了!)先来看看服务器端吧!
首先新建一个ASP.NET Web服务应用程序,我这里将其命名为ShopService,具体代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using BLL.Shop;
using System.Web.Script.Services;
namespace WebService
{
/// <summary>
/// ShopService 的摘要说明
/// </summary>
[WebService(Namespace = "http://具体的根据你的需要咯/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class ShopService : System.Web.Services.WebService
{
[WebMethod]
//[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getShopItems(string userId, int type)
{
Shop shop = new Shop();
return shop.getShopItems(userId, type);
}
}
}
然后再来看看android客户端,我就直接上代码了
package com.xxx;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONObject;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class WebserviceTookit {
// private static final String TAG = "ShopItems";
private static final String WEBSERVICE_IP = "http://10.0.2.2:14294";
public static String getShopItems(String userId, int type) {
try {
// 调用带参数的WebMethod
final String SERVER_URL = WEBSERVICE_IP
+ "/ShopService.asmx/getShopItems"; // 带参数的WebMethod
HttpPost request = new HttpPost(SERVER_URL); // 根据内容来源地址创建一个Http请求
request.addHeader("Content-Type", "application/json; charset=utf-8");// 必须要添加该Http头才能调用WebMethod时返回JSON数据
JSONObject jsonParams = new JSONObject();
jsonParams.put("userId", userId);// 传参
jsonParams.put("type", type);
HttpEntity bodyEntity = new StringEntity(jsonParams.toString(),
"utf8");// 参数必须也得是JSON数据格式的字符串才能传递到服务器端,否则会出现"{'Message':'xxx是无效的JSON基元'}"的错误
request.setEntity(bodyEntity);
HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is
// established.
// The default value is zero, that means the timeout is not used.
int timeoutConnection = 3 * 1000;
HttpConnectionParams.setConnectionTimeout(httpParameters,
timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 5 * 1000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpResponse httpResponse = httpClient.execute(request); // 发送请求并获取反馈
// 解析返回的内容
if (httpResponse.getStatusLine().getStatusCode() == 200) // StatusCode为200表示与服务端连接成功
{
StringBuilder builder = new StringBuilder();
BufferedReader bufferedReader2 = new BufferedReader(
new InputStreamReader(httpResponse.getEntity()
.getContent()));
for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2.readLine()) {
builder.append(s);
}
String resultString = builder.toString();
resultString = JSONToolkit.removeEscape(resultString);
return resultString;
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
return "";
}
}
运行时记得关闭防火墙或者添加例外端口~
分享到:
相关推荐
利用JSON WebService实现Android访问远程数据库.pdf
android端基于soap协议的webservice接口的调用demo
现在要求用户能够注册自己的信息,能够...在aspx页面后台禁止直接访问数据库。考生必须自己建立一个webservice服务,在服务里写好对数据库的增、删、改、查的方法,然后页面后台通过调用webservice服务的方法访问数据库
Android配合WebService访问远程数据库.docx
delphi XE5 ANDROID平台 调用 webservice并访问操作MSSQL数据库
android 用webservice连接后台数据库
android连接远程数据库通过webservice
Android 基于 Retrofit2+Okhttp3 通过SOAP协议请求WebService
利用JavaScript来访问WebService来操作服务器数据库-冷风.pdf
WebService简单调用附数据库,赚一点辛苦分。同志们只需要将备份的数据库还原,然后发布一下这个webservice,随后在浏览器中调用webservice接口地址,就能看到数据啦,代码简单易懂,完全可以适用到你自己的程序中。
基于webservice的Android与服务器端数据交互。
Android与服务器端数据交互(基于SOAP协议整合android webservice)
android登录,webservice连接sql数据库,布局实现界面切换 c#用的vs2008,数据库自己看c#代码
此文档介绍了Android调用天气预报的WebService简单例子。
xfire开发webservice以及Android利用ksoap2访问webservice。包括源码和jar包
ETL KETTLE 中利用Httpclient 调用webservice接口获取XML数据,并解析XML 数据。 完整的KTR实例
调用服务器的webservice接口,实现从Android上传图片到服务器,然后从服务器下载图片到Android客户端 从Android端用io流读取到要上传的图片,用Base64编码成字节流的字符串,通过调用webservice把该字符串作为参数...
最近学习的是在android端如何去调用远程WebService,都说WebService是一种基于SOAP协议的远程调用标准,对于这个协议理解不深,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK...
Android 基于 Retrofit2+Okhttp3 通过SOAP协议请求WebService
labview调用webservice访问远程数据1