急啊ksoap2调用webservice出错soapenv:Server' faultstring

a395159103 2012-02-29 10:53:28
/* WebService方式上传 */
public boolean uploadFile2WebSvr(String filePath){
boolean result = false;
try {
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[(int)file.length()];
int count = 0;
while((count = fis.read(buffer)) >= 0){
baos.write(buffer, 0, count);
}
String uploadBuffer = new String(Base64.encodeBase64(buffer)); //进行Base64编码
connectWebService(uploadBuffer); //调用webservice
Log.i("connectWebService", "start");
fis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}


private boolean connectWebService(String imageBuffer) {
// 命名空间,即服务器端得接口,注:后缀没加 .wsdl
boolean r = false;
String namespace = "http://method.service.com";
String url = "http://192.168.1.236:8080/axis2/services/Upload"; //对应的url
String methodName = "UpdateImage";
//以下就是 调用过程了,不明白的话 请看相关webservice文档
SoapObject request = new SoapObject(namespace, methodName);
request.addProperty("name", "aaa.jpg");
request.addProperty("image", imageBuffer); //参数2 图片字符串
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
// envelope.dotNet = false;
envelope.setOutputSoapObject(request);
AndroidHttpTransport httpTranstation = new AndroidHttpTransport(url);
try {
httpTranstation.call(namespace, envelope);//说是这里出错
SoapObject result = (SoapObject) envelope.getResponse();
r = Boolean.valueOf(result.getProperty("return").toString());
// Object result = envelope.getResponse();
Log.i("connectWebService", result.toString());
} catch (Exception e) {
e.printStackTrace();
}
return r;
}

错误代码
02-29 02:51:22.341: W/System.err(683): SoapFault - faultcode: 'soapenv:Server' faultstring: 'org.apache.commons.codec.binary.Base64.decodeBase64(Ljava/lang/String;)[B' faultactor: 'null' detail: org.kxml2.kdom.Node@45054f90
02-29 02:51:22.341: W/System.err(683): at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:112)
02-29 02:51:22.341: W/System.err(683): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:137)
02-29 02:51:22.341: W/System.err(683): at org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
02-29 02:51:22.341: W/System.err(683): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
02-29 02:51:22.341: W/System.err(683): at com.wk.photograph.Upload.connectWebService(Upload.java:287)
02-29 02:51:22.341: W/System.err(683): at com.wk.photograph.Upload.uploadFile2WebSvr(Upload.java:257)
02-29 02:51:22.341: W/System.err(683): at com.wk.photograph.Upload$2.onClick(Upload.java:185)
02-29 02:51:22.341: W/System.err(683): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
02-29 02:51:22.341: W/System.err(683): at android.os.Handler.dispatchMessage(Handler.java:99)
02-29 02:51:22.341: W/System.err(683): at android.os.Looper.loop(Looper.java:123)
02-29 02:51:22.341: W/System.err(683): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-29 02:51:22.352: W/System.err(683): at java.lang.reflect.Method.invokeNative(Native Method)
02-29 02:51:22.352: W/System.err(683): at java.lang.reflect.Method.invoke(Method.java:521)
02-29 02:51:22.352: W/System.err(683): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-29 02:51:22.352: W/System.err(683): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-29 02:51:22.352: W/System.err(683): at dalvik.system.NativeStart.main(Native Method)
...全文
1758 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
WellAndy 2014-11-17
  • 打赏
  • 举报
回复
可能是你的webservice服务端的代码有问题,如果是用nusoap的写的话,require_once("lib/nusoap.php");一定要最先引用。
摩卡i 2014-08-25
  • 打赏
  • 举报
回复
楼主请教下你是怎么解决的这个问题的?
无始大帝 2014-07-29
  • 打赏
  • 举报
回复
把namespace+methodName改成null
jonah_cheung 2014-07-14
  • 打赏
  • 举报
回复
我试下一下,4楼的回答是有用的: httpTranstation.call(namespace, envelope); 这里call的不是命名空间,而是方法,所以应该改成httpTranstation.call(namespace+methodName, envelope); 网上很多人回答要去掉:wsdl,这个没影响。
kieran_ 2014-03-14
  • 打赏
  • 举报
回复
引用 3 楼 a395159103 的回复:
看到csdn这样我感觉有点失落,大家相互交流技术才能进步啊。 这个问题我找到原因了,是我的axis2多引了一个commons包,删掉就可以了
有好几个commons包啊,具体名称是什么?
inweriok抹香鲸 2013-05-22
  • 打赏
  • 举报
回复
引用 3 楼 a395159103 的回复:
看到csdn这样我感觉有点失落,大家相互交流技术才能进步啊。 这个问题我找到原因了,是我的axis2多引了一个commons包,删掉就可以了
请问是在自己写的webService工程下多引入了一个包吗?这个包全名是什么呀?我也遇到了同样的问题,求指点啊!!
inweriok抹香鲸 2013-05-22
  • 打赏
  • 举报
回复
引用 4 楼 lvseqiyiguo 的回复:
httpTranstation.call(namespace, envelope); 这里call的不是命名空间,而是方法,所以应该改成httpTranstation.call(namespace+methodName, envelope);
请问一下呀!!这个namespace+methodName d得到子妇产连接起来中间不用"/"这个隔开吗??
greenredshark 2012-06-07
  • 打赏
  • 举报
回复
楼主试过2M左右的图片吗?
我执行下面这个代码总是报内存溢出,我上传的图片将近2M
httpTranstation.call(namespace, envelope);//说是这里出错
lvseqiyiguo 2012-04-19
  • 打赏
  • 举报
回复
httpTranstation.call(namespace, envelope);
这里call的不是命名空间,而是方法,所以应该改成httpTranstation.call(namespace+methodName, envelope);
a395159103 2012-02-29
  • 打赏
  • 举报
回复
csdn的android区人气这么少呢?
a395159103 2012-02-29
  • 打赏
  • 举报
回复
是不是Base64编码有什么问题
a395159103 2012-02-29
  • 打赏
  • 举报
回复
看到csdn这样我感觉有点失落,大家相互交流技术才能进步啊。
这个问题我找到原因了,是我的axis2多引了一个commons包,删掉就可以了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧