1、An exception occurred: org.ksoap2.SoapFault

SoapFault - faultcode: 'soap:Server' faultstring: '服务器无法处理请求。 ---> 未能加载文件或程序集“MySql.Data, Version=6.3.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”或它的某一个依赖项。系统找不到指定的文件。' faultactor: 'null' detail: org.kxml2.kdom.Node@423841d0

原因:webservice 中采用了强类型数据集(DataSet)连接MySql数据库,简化数据库底层开发

解决:装一下mysql-connector-net-6.3.9.msi就可以了,文章下面有地址

2、SoapFault - faultcode: 'soap:Server' faultstring: '服务器无法处理请求。 ---> 值不能为 null。

参数名: C_LineID' faultactor: 'null' detail: org.kxml2.kdom.Node@42387460

原因:先检查一下传递的参数C_LineID的值是否为空,发现这个参数没有这个参数,那这儿错误中既然提到了,那么说明是webservice中用到了这个参数

但是我没有传递这个参数的值;问题找到了,

解决:给C_LineID传递值

3、connect failed: ENETUNREACH (Network is unreachable)

原因:设备没有连接上网络,哈哈

4、Android访问webservice 帮助类,源码如下:

package com.sinobpo.nbsmt.webservice;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set; import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE; public class WebServiceUtil { /**
* .Net WebService调用方法
*
* @param nameSpace
* @param methodName
* @param webServiceUrl
* @param map
* @return
*/
public static String doCallWebService(String nameSpace, String methodName,
String webServiceUrl, Map map) {
String xmlStr = null;
SoapObject _soapObject = new SoapObject(nameSpace, methodName); // 如果有参数,设置调用方法参数
Set _keySet = map.keySet();// 返回键的集合
Iterator _iterator = _keySet.iterator(); while (_iterator.hasNext()) // 第一种迭代方式取键值
{
Object key = _iterator.next();
_soapObject.addProperty(key.toString(), map.get(key));
}
try {
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11); // 是否可以调用.netWebService
envelope.dotNet = true;
envelope.setOutputSoapObject(_soapObject); HttpTransportSE ht = new HttpTransportSE(webServiceUrl, 5000); ht.call(nameSpace + methodName, envelope); if (envelope.getResponse() != null) {
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
xmlStr = response.toString();
} } catch (Exception e) {
System.out.println("prop: " + e.toString());
e.printStackTrace();
return null;
}
return xmlStr;
} /**
* Java WebService调用方法
*
* @param nameSpace
* @param methodName
* @param webServiceUrl
* @param map
* @return
*/
public static String doCallWebServiceForJava(String nameSpace,
String methodName, String webServiceUrl, Map map) {
String xmlStr = null;
// 创建httpTransportSE传输对象
HttpTransportSE ht = new HttpTransportSE(webServiceUrl);
ht.debug = true;
// 使用soap1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
// 实例化SoapObject对象
SoapObject request = new SoapObject(nameSpace, methodName);
/**
* 设置参数,参数名不一定需要跟调用的服务器端的参数名相同,只需要对应的顺序相同即可
* */
// 如果有参数,设置调用方法参数
Set _keySet = map.keySet();// 返回键的集合
Iterator _iterator = _keySet.iterator(); while (_iterator.hasNext()) // 第一种迭代方式取键值
{
Object key = _iterator.next();
request.addProperty(key.toString(), map.get(key));
}
// request.addProperty("json", "YYYY");
// soapheader在这里
// Element[] header = new Element[1];
// Element lv = new Element().createElement(nameSpace, "json");
// lv.addChild(Node.TEXT, "");
// 将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息
envelope.bodyOut = request;
// envelope.dotNet = false;
try {
// 调用webService
ht.call(null, envelope);
if (envelope.getResponse() != null) {
// SoapObject result = (SoapObject) envelope.bodyIn;
// String name = envelope.bodyIn.toString();
System.out.println("envelope.getResponse()="
+ envelope.getResponse().toString());
xmlStr = "";
} else {
xmlStr = null;
}
} catch (Exception e) {
System.out.println("prop: " + e.toString());
e.printStackTrace();
} return xmlStr;
} public static String doCallWebServiceForPhp(String webServiceUrl) {
String xmlStr = null;
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
HttpParams p = new BasicHttpParams();
p.setParameter("user", "1");
HttpClient httpclient = new DefaultHttpClient(p);
HttpPost httppost = new HttpPost(webServiceUrl);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("user", "1"));
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
ResponseHandler<String> responseHandler = new BasicResponseHandler();
xmlStr = httpclient.execute(httppost, responseHandler);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return xmlStr;
}
}

3、invalid project description

a、此错误简单翻译为:无效的项目描述。点击错误对话框中的detail按钮,提示为:overlaps the location of another project的描述,翻译成中文也就是说导入的项目位置与另外一个项目重叠。

b、导致此错误的很有可能的原因之一为:此项目在eclipse的工作目录之下。所以,将项目拷贝到另一个目录下,然后再尝试导入,大部分情况下是可以解决此问题的。

资料地址

mysql-connector-net-6.3.9.msi:http://yunpan.cn/cKx77DgN6Z9EX (提取码:80c7)

Android 开发笔记“调用.net webservice遇到的问题”的更多相关文章

  1. Android 开发笔记 “调用WebService”

    WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台.不同语言.不同技术整合到一块.在Android SDK中并没有提供调用WebService的库 ...

  2. 【转】Android开发笔记(序)写在前面的目录

    原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...

  3. Android开发笔记——以Volley图片加载、缓存、请求及展示为例理解Volley架构设计

    Volley是由Google开源的.用于Android平台上的网络通信库.Volley通过优化Android的网络请求流程,形成了以Request-RequestQueue-Response为主线的网 ...

  4. Android开发笔记(一百三十四)协调布局CoordinatorLayout

    协调布局CoordinatorLayout Android自5.0之后对UI做了较大的提升.一个重大的改进是推出了MaterialDesign库,而该库的基础即为协调布局CoordinatorLayo ...

  5. 【转】Android开发笔记——圆角和边框们

    原文地址:http://blog.xianqu.org/2012/04/android-borders-and-radius-corners/ Android开发笔记——圆角和边框们 在做Androi ...

  6. [置顶] Android开发笔记(成长轨迹)

    分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...

  7. Android开发笔记:打包数据库

    对于数据比较多的控制一般会加入SQLite数据库进行数据存储,在打包时这些数据库是不自动打包到apk中的,如何创建数据库呢 方法1:将创建数据库的sql语句在SQLiteHelper继承类中实现,在第 ...

  8. Android开发笔记--hello world 和目录结构

    原文:Android开发笔记--hello world 和目录结构 每接触一个新东西 都有一个hello world的例子. 1.新建项目 2.配置AVD AVD 没有要新建个,如果不能创建 运行SD ...

  9. [APP] Android 开发笔记 003-使用Ant Release 打包与keystore加密说明

    接上节 [APP] Android 开发笔记 002 5. 使用ant release 打包 1)制作 密钥文件 release.keystore (*.keystore) keytool -genk ...

随机推荐

  1. Seinfeld(栈模拟)

    Seinfeld Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  2. Ubuntu下屏幕录像、后期处理不完全攻略

    提要 如果要做成果展示或者效果演示,通常需要录取屏幕生成视频文件,在windows中我们可以用屏幕录像专家在录像, vegas 来做后期处理,Ubuntu可以么? 答案时当然可以!虽然第一次用觉得有点 ...

  3. Codeforces Round #277.5 (Div. 2)-D

    题意:求该死的菱形数目.直接枚举两端的点.平均意义每一个点连接20条边,用邻接表暴力计算中间节点数目,那么中间节点任选两个与两端可组成的菱形数目有r*(r-1)/2. 代码: #include< ...

  4. SICP 习题 (1.10)解题总结

    SICP 习题 1.10 讲的是一个叫“Akermann函数”的东西,去百度查可以查到对应的中文翻译,叫“阿克曼函数”. 就像前面的解题总结中提到的,我是一个数学恐惧者,看着稍微复杂一点的什么函数我就 ...

  5. JavaScript继承的实现

    怎样在JavaScript中实现简单的继承?  以下的样例将创建一个雇员类Employee,它从Person继承了原型prototype中的全部属性. function Employee(name, ...

  6. Android tp的虚拟按键(virtual key)处理

    Android tp的虚拟按键处理 现在在越来越多的Android的手机都是虚拟按键来操作,但是对于开发者来说可能会关心Android对虚拟按键如何处理的.对Linux熟悉的人可能会说,it's ea ...

  7. 快照(Snapshot)

    一.定义: SNIA(存储网络行业协会)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像.快照可以是其所表示的数据的一个 ...

  8. LINQ中的Aggregate用法总结

    Aggregate这个语法可以做一些复杂的聚合运算,例如累计求和,累计求乘积.它接受2个参数,一般第一个参数是称为累积数(默认情况下等于第一个值),而第二个代表了下一个值.第一次计算之后,计算的结果会 ...

  9. Convert Sorted List to Balanced Binary Search Tree (BST)

    (http://leetcode.com/2010/11/convert-sorted-list-to-balanced-binary.html) Given a singly linked list ...

  10. [C#参考]UI和线程(一)

    Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程. 什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包 ...