需要加入两个包
服务器端
Upload.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/Upload/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Upload" targetNamespace="http://www.example.org/Upload/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/Upload/">
<xsd:element name="UpdateImage">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="image" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UpdateImageResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="UpdateImageRequest">
<wsdl:part element="tns:UpdateImage" name="parameters"/>
</wsdl:message>
<wsdl:message name="UpdateImageResponse">
<wsdl:part element="tns:UpdateImageResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="Upload">
<wsdl:operation name="UpdateImage">
<wsdl:input message="tns:UpdateImageRequest"/>
<wsdl:output message="tns:UpdateImageResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="UploadSOAP" type="tns:Upload">
<soap:binding style="document" transport=">
<wsdl:operation name="UpdateImage">
<soap:operation soapAction=">
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Upload">
<wsdl:port binding="tns:UploadSOAP" name="UploadSOAP">
<soap:address location=">
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
/**
* UploadSOAPImpl.java
*
* This file was auto-generated from WSDL
* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
*/
package org.example.www.Upload;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import sun.misc.BASE64Decoder;
public class UploadSOAPImpl implements org.example.www.Upload.Upload_PortType {
public boolean updateImage(String name, String image)
throws java.rmi.RemoteException {
FileOutputStream fos = null;
try {
byte[] buffer = new BASE64Decoder().decodeBuffer(image);
System.out.println(buffer.length);
// fos = new FileOutputStream("d://" + name + ".jpg");
fos = new FileOutputStream("/home/tlcom/uploadImg/"+name+".jpg");
fos.write(buffer);
fos.flush();
fos.close();
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
// TODO: handle exception
} catch (IOException e) {
e.printStackTrace();
// TODO: handle exception
} finally {
try {
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
return false;
}
}
<ns1:deployment xmlns="
http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:ns1="http://xml.apache.org/axis/wsdd/"><ns1:globalConfiguration>
<ns1:parameter name="sendMultiRefs" value="true"/>
<ns1:parameter name="disablePrettyXML" value="true"/>
<ns1:parameter name="adminPassword" value="admin"/>
<ns1:parameter name="attachments.Directory" value="D:\worksapce\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\uploadImg\WEB-INF\attachments"/>
<ns1:parameter name="dotNetSoapEncFix" value="true"/>
<ns1:parameter name="enableNamespacePrefixOptimization" value="false"/>
<ns1:parameter name="sendXMLDeclaration" value="true"/>
<ns1:parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
<ns1:parameter name="sendXsiTypes" value="true"/>
<ns1:requestFlow>
<ns1:handler type="java:org.apache.axis.handlers.JWSHandler">
<ns1:parameter name="scope" value="session"/>
</ns1:handler>
<ns1:handler type="java:org.apache.axis.handlers.JWSHandler">
<ns1:parameter name="scope" value="request"/>
<ns1:parameter name="extension" value=".jwr"/>
</ns1:handler>
</ns1:requestFlow>
</ns1:globalConfiguration>
<ns1:handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
<ns1:handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<ns1:handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<ns1:service name="AdminService" provider="java:MSG">
<ns1:parameter name="allowedMethods" value="AdminService"/>
<ns1:parameter name="enableRemoteAdmin" value="false"/>
<ns1:parameter name="className" value="org.apache.axis.utils.Admin"/>
<ns1:namespace>http://xml.apache.org/axis/wsdd/</ns1:namespace>
</ns1:service>
<ns1:service name="UploadImg" provider="java:RPC" style="wrapped" use="literal">
<ns1:parameter name="allowedMethods" value="*"/>
<ns1:parameter name="wsdlPortType" value="Upload"/>
<ns1:parameter name="typeMappingVersion" value="1.2"/>
<ns1:parameter name="wsdlServicePort" value="UploadSOAP"/>
<ns1:parameter name="className" value="org.example.www.Upload.UploadSOAPSkeleton"/>
<ns1:parameter name="wsdlTargetNamespace" value=">
<ns1:parameter name="wsdlServiceElement" value="Upload"/>
<ns1:parameter name="schemaUnqualified" value=">
</ns1:service>
<ns1:service name="Version" provider="java:RPC">
<ns1:parameter name="allowedMethods" value="getVersion"/>
<ns1:parameter name="className" value="org.apache.axis.Version"/>
</ns1:service>
<ns1:transport name="http">
<ns1:requestFlow>
<ns1:handler type="URLMapper"/>
<ns1:handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</ns1:requestFlow>
<ns1:parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>
<ns1:parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
<ns1:parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>
<ns1:parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>
<ns1:parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
<ns1:parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
</ns1:transport>
<ns1:transport name="local">
<ns1:responseFlow>
<ns1:handler type="LocalResponder"/>
</ns1:responseFlow>
</ns1:transport>
</ns1:deployment>
客户端
private void uploadTest() {
try {
// FileInputStream fis = new FileInputStream("/sdcard/sdf.jpg");
FileInputStream fis = new FileInputStream("d://1.jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[8192];
int count = 0;
while ((count = fis.read(buffer)) >= 0) {
baos.write(buffer, 0, count);
}
String uploadBuffer = new String(Base64.encodeBase64(baos
.toByteArray()));
connectWebService(uploadBuffer);
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
// TODO: handle exception
} catch (IOException e) {
e.printStackTrace();
// TODO: handle exception
}
}
private boolean connectWebService(String imgBuffer) {
boolean ret = false;
String Url = "
String namespace = "http://www.example.org/Upload/";
String methodName = "updateImage";
SoapObject request = new SoapObject(namespace, methodName);
request.addProperty("image", imgBuffer);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
AndroidHttpTransport aht = new AndroidHttpTransport(Url);
try {
aht.call(null,envelope);
SoapObject so=(SoapObject)envelope.bodyIn;
ret=Boolean.valueOf(so.getProperty("out").toString());//true false
} catch (IOException e) {
e.printStackTrace(); }
catch (org.xmlpull.v1.XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}