从服务器通过Web服务发送一个PDF文件到客户端 [英] Sending a pdf file to client from server through web service

查看:121
本文介绍了从服务器通过Web服务发送一个PDF文件到客户端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于我是新来的Web服务可以请你告诉我的问题的答案。 我的问题是

As I am new to web service can you please tell the answer of my question. My question is

我想作为客户端调用这个Web服务来实现它发送PDF文件到客户端的Web服务。

I want to implement a web service which sends pdf files to client as the client calls this web service.

请人帮我与漂亮的一张code或解释。

Please someone help me with nice piece of code or explanation.

现在可以有一个人请解决我的错误。

Now can some one please solve my error.

9月12日至23日:42:48.429:DEBUG / INSTALLD(32):DexInv:--- BEGIN/data/app/vmdl33143.tmp'---   九月12号至23日:42:51.708:DEBUG / dalvikvm(328):DexOpt:Lorg / xmlpull / V1 / XmlPullParser;具有较早定义;挡住了
  九月12号至23日:42:51.730:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / IO / KXmlParser;具有较早定义;挡住了
  九月12号至23日:42:51.749:DEBUG / dalvikvm(328):DexOpt:Lorg / xmlpull / V1 / XmlSerializer的;具有较早定义;挡住了
  九月12号至23日:42:51.759:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / IO / KXmlSerializer;具有较早定义;挡住了
  九月12号至23日:42:51.779:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / KDOM /节点;具有较早定义;挡住了
  九月12号至23日:42:51.779:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / KDOM /文件;'具有较早定义;挡住了
  九月12号至23日:42:51.819:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / KDOM /元;具有较早定义;挡住了
  九月12号至23日:42:51.830:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / WAP / WBXML;具有较早定义;挡住了
  九月12号至23日:42:51.840:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / WAP / WbxmlParser;具有较早定义;挡住了
  九月12号至23日:42:51.900:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / WAP / WbxmlSerializer;具有较早定义;挡住了
  九月12号至23日:42:51.910:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / WAP /的SyncML / SyncML的;具有较早定义;挡住了
  九月12号至23日:42:51.910:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / WAP / WML / WML;具有较早定义;挡住了
  九月12号至23日:42:51.929:DEBUG / dalvikvm(328):DexOpt:Lorg / kxml2 / WAP / WV / WV;具有较早定义;挡住了
  九月12号至23日:42:51.929:DEBUG / dalvikvm(328):DexOpt:Lorg / xmlpull / V1 / XmlPullParserException;具有较早定义;挡住了
  九月12号至23日:42:51.949:DEBUG / dalvikvm(328):DexOpt:Lorg / xmlpull / V1 / XmlPullParserFactory;具有较早定义;挡住了
  九月12号至23日:42:53.299:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / xmlpull / V1 / XmlPullParser;
  九月12号至23日:42:53.319:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / xmlpull / V1 / XmlPullParser;
  九月12号至23日:42:53.329:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / xmlpull / V1 / XmlPullParser;
  九月12号至23日:42:53.350:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / xmlpull / V1 / XmlPullParser;
  九月12号至23日:42:53.350:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / xmlpull / V1 / XmlPullParser;
  九月12号至23日:42:53.370:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / xmlpull / V1 / XmlPullParser;
  九月12号至23日:42:53.499:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / xmlpull / V1 / XmlPullParser;
  九月12号至23日:42:53.560:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / xmlpull / V1 / XmlPullParser;
  九月12号至23日:42:53.570:信息/ dalvikvm(328):DexOpt:不解决不明确的类的Lorg / kxml2 / IO / KXmlSerializer;
  九月12号至23日:42:53.659:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / xmlpull / V1 / XmlPullParser;':多重定义
  九月12号至23日:42:53.668:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / IO / KXmlParser;':多重定义
  九月12号至23日:42:53.668:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / xmlpull / V1 / XmlSerializer的;':多重定义
  九月12号至23日:42:53.668:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / IO / KXmlSerializer;':多重定义
  九月12号至23日:42:53.680:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / KDOM /节点;':多重定义
  九月12号至23日:42:53.690:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / KDOM /文件;':多重定义
  九月12号至23日:42:53.709:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / KDOM /元;':多重定义
  九月12号至23日:42:53.709:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / WAP / WBXML;':多重定义
  九月12号至23日:42:53.719:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / WAP / WbxmlParser;':多重定义
  九月12号至23日:42:53.719:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / WAP / WbxmlSerializer;':多重定义
  九月12号至23日:42:53.719:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / WAP /的SyncML / SyncML的;':多重定义
  九月12号至23日:42:53.719:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / WAP / WML / WML;':多重定义
  九月12号至23日:42:53.719:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / kxml2 / WAP / WV / WV;':多重定义
  九月12号至23日:42:53.719:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / xmlpull / V1 / XmlPullParserException;':多重定义
  九月12号至23日:42:53.719:DEBUG / dalvikvm(328):DexOpt:未验证Lorg / xmlpull / V1 / XmlPullParserFactory;':多重定义
  九月12号至23日:42:53.829:DEBUG / dalvikvm(328):DexOpt:负载867ms,验证1752ms,选择108ms
  九月12号至23日:42:54.029:DEBUG / INSTALLD(32):DexInv:--- END/data/app/vmdl33143.tmp'(success)---

12-23 09:42:48.429: DEBUG/installd(32): DexInv: --- BEGIN '/data/app/vmdl33143.tmp' --- 12-23 09:42:51.708: DEBUG/dalvikvm(328): DexOpt: 'Lorg/xmlpull/v1/XmlPullParser;' has an earlier definition; blocking out
12-23 09:42:51.730: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/io/KXmlParser;' has an earlier definition; blocking out
12-23 09:42:51.749: DEBUG/dalvikvm(328): DexOpt: 'Lorg/xmlpull/v1/XmlSerializer;' has an earlier definition; blocking out
12-23 09:42:51.759: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/io/KXmlSerializer;' has an earlier definition; blocking out
12-23 09:42:51.779: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/kdom/Node;' has an earlier definition; blocking out
12-23 09:42:51.779: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/kdom/Document;' has an earlier definition; blocking out
12-23 09:42:51.819: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/kdom/Element;' has an earlier definition; blocking out
12-23 09:42:51.830: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/wap/Wbxml;' has an earlier definition; blocking out
12-23 09:42:51.840: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/wap/WbxmlParser;' has an earlier definition; blocking out
12-23 09:42:51.900: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/wap/WbxmlSerializer;' has an earlier definition; blocking out
12-23 09:42:51.910: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/wap/syncml/SyncML;' has an earlier definition; blocking out
12-23 09:42:51.910: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/wap/wml/Wml;' has an earlier definition; blocking out
12-23 09:42:51.929: DEBUG/dalvikvm(328): DexOpt: 'Lorg/kxml2/wap/wv/WV;' has an earlier definition; blocking out
12-23 09:42:51.929: DEBUG/dalvikvm(328): DexOpt: 'Lorg/xmlpull/v1/XmlPullParserException;' has an earlier definition; blocking out
12-23 09:42:51.949: DEBUG/dalvikvm(328): DexOpt: 'Lorg/xmlpull/v1/XmlPullParserFactory;' has an earlier definition; blocking out
12-23 09:42:53.299: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.319: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.329: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.350: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.350: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.370: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.499: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.560: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.570: INFO/dalvikvm(328): DexOpt: not resolving ambiguous class 'Lorg/kxml2/io/KXmlSerializer;'
12-23 09:42:53.659: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParser;': multiple definitions
12-23 09:42:53.668: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/io/KXmlParser;': multiple definitions
12-23 09:42:53.668: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlSerializer;': multiple definitions
12-23 09:42:53.668: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/io/KXmlSerializer;': multiple definitions
12-23 09:42:53.680: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/kdom/Node;': multiple definitions
12-23 09:42:53.690: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/kdom/Document;': multiple definitions
12-23 09:42:53.709: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/kdom/Element;': multiple definitions
12-23 09:42:53.709: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/wap/Wbxml;': multiple definitions
12-23 09:42:53.719: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/wap/WbxmlParser;': multiple definitions
12-23 09:42:53.719: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/wap/WbxmlSerializer;': multiple definitions
12-23 09:42:53.719: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/wap/syncml/SyncML;': multiple definitions
12-23 09:42:53.719: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/wap/wml/Wml;': multiple definitions
12-23 09:42:53.719: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/kxml2/wap/wv/WV;': multiple definitions
12-23 09:42:53.719: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParserException;': multiple definitions
12-23 09:42:53.719: DEBUG/dalvikvm(328): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParserFactory;': multiple definitions
12-23 09:42:53.829: DEBUG/dalvikvm(328): DexOpt: load 867ms, verify 1752ms, opt 108ms
12-23 09:42:54.029: DEBUG/installd(32): DexInv: --- END '/data/app/vmdl33143.tmp'(success) ---

这个错误在Android模拟器的DDMS。

This the Error in DDMS of android emulator.

现在我的web服务与; code看起来喜欢这一点。

Now my web service & code looks likes this.

code: -

package com.uks.webservice;

import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.rmi.Remote;  

public interface SendPDF extends Remote {

    public String[] sendPDF() throws FileNotFoundException, IOException,
            Exception;
}

主类从Web服务创建: -

Main Class from web service is created:-

package com.uks.webservice;

import java.io.File;   
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.InputStream;  

import javax.activation.DataHandler;  
import javax.activation.FileDataSource;  

import sun.misc.BASE64Encoder;  

public class SendPDFImpl implements SendPDF {

@Override
public String[] sendPDF() {

    String[] pdfFile = new String[2];
    BASE64Encoder encoder = new BASE64Encoder();
    File file = new File(
            "C:/eclipse/workspace/AIPWebService/src/test.pdf");
    DataHandler dh = new DataHandler(new FileDataSource(file));
    String readLine = null;
    byte[] data = new byte[(int) file.length()];
    int offset = 0;
    int numRead = 0;
    InputStream stream = null;
    try {
        System.out.println("Web Service Called Successfully");
        stream = dh.getInputStream();
        // BufferedReader bufferedReader = new BufferedReader(
        // new InputStreamReader(stream));
        while (offset < data.length
                && (numRead = stream.read(data, offset, data.length
                        - offset)) >= 0) {
            offset += numRead;
        }
        readLine = encoder.encode(data);
        // while ((readLine = bufferedReader.readLine()) != null) {
        System.out.println("'Reading File............................");
        System.out.println("\n");
        System.out.println("Data Reading Successful");

        pdfFile[0] = file.getName();
        pdfFile[1] = readLine;

        stream.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return pdfFile;
}
}

Web服务: -

Web Service:-

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://webservice.uks.com"
    xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://webservice.uks.com"
    xmlns:intf="http://webservice.uks.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <!--
        WSDL created by Apache Axis version: 1.4 Built on Apr 22, 2006
        (06:55:48 PDT)
    -->
    <wsdl:types>
        <schema elementFormDefault="qualified" targetNamespace="http://webservice.uks.com"
            xmlns="http://www.w3.org/2001/XMLSchema">
            <element name="sendPDF">
                <complexType />
            </element>
            <element name="sendPDFResponse">
                <complexType>
                    <sequence>
                        <element maxOccurs="unbounded" name="sendPDFReturn" type="xsd:String" />
                    </sequence>
                </complexType>
            </element>
        </schema>
    </wsdl:types>

    <wsdl:message name="sendPDFRequest">

        <wsdl:part element="impl:sendPDF" name="parameters" />

    </wsdl:message>

    <wsdl:message name="sendPDFResponse">

        <wsdl:part element="impl:sendPDFResponse" name="parameters" />

    </wsdl:message>

    <wsdl:portType name="SendPDFImpl">

        <wsdl:operation name="sendPDF">

            <wsdl:input message="impl:sendPDFRequest" name="sendPDFRequest" />

            <wsdl:output message="impl:sendPDFResponse" name="sendPDFResponse" />

        </wsdl:operation>

    </wsdl:portType>

    <wsdl:binding name="SendPDFImplSoapBinding" type="impl:SendPDFImpl">

        <wsdlsoap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />

        <wsdl:operation name="sendPDF">

            <wsdlsoap:operation soapAction="" />

            <wsdl:input name="sendPDFRequest">

                <wsdlsoap:body use="literal" />

            </wsdl:input>

            <wsdl:output name="sendPDFResponse">

                <wsdlsoap:body use="literal" />

            </wsdl:output>

        </wsdl:operation>

    </wsdl:binding>

    <wsdl:service name="SendPDFImplService">

        <wsdl:port binding="impl:SendPDFImplSoapBinding" name="SendPDFImpl">

            <wsdlsoap:address
                location="http://localhost:8080/AIPWebService/services/SendPDFImpl" />

        </wsdl:port>

    </wsdl:service>

</wsdl:definitions>

现在我的Andr​​oid code。

And Now My Android Code.

package com.uks.android.webservice;

import android.app.Activity;  
import android.os.Bundle;  
import android.widget.TextView;  

import org.ksoap2.SoapEnvelope;  
import org.ksoap2.serialization.SoapObject;  
import org.ksoap2.serialization.SoapSerializationEnvelope;  
import org.ksoap2.transport.AndroidHttpTransport;  

public class PDFActivity extends Activity {  
    private final String METHOD_NAME = "sendPDF";  
    private final String NAMESPACE = "http://webservice.uks.com/";  
    private final String SOAP_ACTION = NAMESPACE + METHOD_NAME;  
    private final String URL = "http://192.168.1.123:8080/AIPWebService/services/SendPDFImpl";  

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView textViewOne = (TextView) findViewById(R.id.textViewOne);
        TextView textViewTwo = (TextView) findViewById(R.id.textViewTwo);
        try {
            SoapObject soapObject = new SoapObject(NAMESPACE, METHOD_NAME);

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
            envelope.setOutputSoapObject(soapObject);

            textViewOne.setText("Web Service Started");
            AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);

            httpTransport.call(SOAP_ACTION, envelope);

            SoapObject result = (SoapObject) envelope.getResponse();
            textViewTwo.setText(result.toString());
            // Object result = envelope.getResponse();
            // FileOutputStream outputStream = openFileOutput(name, mode)

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

请帮我。

在此先感谢。

推荐答案

您需要将文件转换为字节数组,并把它传递到服务器服务做反向获取文件回来。

You need to convert file to byte array and pass it on to service on server do the reverse to get file back.

这篇关于从服务器通过Web服务发送一个PDF文件到客户端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆