2010-12-22 5 views
8

Comme je suis nouveau sur le web service pouvez-vous s'il vous plaît dire la réponse à ma question. Ma question estEnvoyer un fichier pdf au client à partir du serveur via le service Web

Je veux mettre en œuvre un service Web qui envoie des fichiers pdf au client comme le client appelle ce service Web.

S'il vous plaît quelqu'un m'aider avec un morceau de code ou une explication.

Maintenant, quelqu'un peut-il s'il vous plaît résoudre mon erreur.

12-23 09: 42: 48,429: debug/installd (32): DexInv: --- BEGIN '/data/app/vmdl33143.tmp' --- 12 au 23 septembre: 42: 51,708 : DEBUG/dalvikvm (328): DexOpt: 'Lorg/xmlpull/v1/XmlPullParser;' a une définition antérieure; blocage
12-23 09: 42: 51.730: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/io/KXmlParser;' a une définition antérieure; blocage
12-23 09: 42: 51.749: DEBUG/dalvikvm (328): DexOpt: 'Lorg/xmlpull/v1/XmlSerializer;' a une définition antérieure; blocage
12-23 09: 42: 51.759: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/io/KXmlSerializer;' a une définition antérieure; blocage
12-23 09: 42: 51.779: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/kdom/Node;' a une définition antérieure; blocage
12-23 09: 42: 51.779: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/kdom/Document;' a une définition antérieure; blocage
12-23 09: 42: 51.819: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/kdom/Element;' a une définition antérieure; blocage
12-23 09: 42: 51.830: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/wap/Wbxml;' a une définition antérieure; blocage
12-23 09: 42: 51.840: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/wap/WbxmlParser;' a une définition antérieure; blocage
12-23 09: 42: 51.900: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/wap/WbxmlSerializer;' a une définition antérieure; blocage
12-23 09: 42: 51.910: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/wap/syncml/SyncML;' a une définition antérieure; blocage
12-23 09: 42: 51.910: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/wap/wml/Wml;' a une définition antérieure; blocage
12-23 09: 42: 51.929: DEBUG/dalvikvm (328): DexOpt: 'Lorg/kxml2/wap/wv/WV;' a une définition antérieure; blocage
12-23 09: 42: 51.929: DEBUG/dalvikvm (328): DexOpt: 'Lorg/xmlpull/v1/XmlPullParserException;' a une définition antérieure; blocage
12-23 09: 42: 51.949: DEBUG/dalvikvm (328): DexOpt: 'Lorg/xmlpull/v1/XmlPullParserFactory;' a une définition antérieure; blocage
12-23 09: 42: 53.299: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09: 42: 53.319: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09: 42: 53.329: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09: 42: 53.350: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09: 42: 53.350: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09:42:53.370: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09: 42: 53.499: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09: 42: 53.560: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/xmlpull/v1/XmlPullParser;'
12-23 09: 42: 53.570: INFO/dalvikvm (328): DexOpt: ne pas résoudre la classe ambiguë 'Lorg/kxml2/io/KXmlSerializer;'
12 à 23 septembre: 42: 53,659: debug/dalvikvm (328): DexOpt: non vérification de 'LORG/xmlpull/v1/XmlPullParser;': de multiples définitions
12 à 23 septembre: 42: 53.668: debug/dalvikvm (328): DexOpt: ne vérifie pas 'Lorg/kxml2/io/KXmlParser;': plusieurs définitions
12-23 09: 42: 53.668: DEBUG/dalvikvm (328): DexOpt: ne vérifie pas 'Lorg/xmlpull/v1/XmlSerializer ; ': de multiples définitions
12 au 23 septembre: 42: 53.668: debug/dalvikvm (328): DexOpt: non vérification de 'LORG/kxml2/io/KXmlSerializer;': de multiples définitions
12 au 23 septembre: 42: 53,680 : DEBUG/dalvikvm (328): DexOpt: ne pas vérifier 'Lorg/kxml2/kdom/Node;': plusieurs définitions
12-23 09: 42: 53.690: DEBUG/dalvikvm (328): DexOpt: ne pas vérifier ing 'Lorg/kxml2/kdom/Document;': plusieurs définitions
12-23 09: 42: 53.709: DEBUG/dalvikvm (328): DexOpt: ne vérifie pas 'Lorg/kxml2/kdom/Element;': plusieurs définitions
12-23 09: 42: 53.709: DEBUG/dalvikvm (328): DexOpt: ne pas vérifier 'Lorg/kxml2/wap/Wbxml;': plusieurs définitions
12-23 09: 42: 53.719: DEBUG/dalvikvm (328): DexOpt: ne vérifie pas 'Lorg/kxml2/wap/WbxmlParser;': plusieurs définitions
12-23 09: 42: 53.719: DEBUG/dalvikvm (328): DexOpt: ne vérifie pas 'Lorg/kxml2/wap/WbxmlSerializer; ': plusieurs définitions
12-23 09: 42: 53.719: DEBUG/dalvikvm (328): DexOpt: ne vérifie pas' Lorg/kxml2/wap/syncml/SyncML; ': plusieurs définitions
12-23 09 : 42: 53.719: DEBUG/dalvikvm (328): DexOpt: ne vérifie pas 'Lorg/kxml2/wap/wml;': plusieurs définitions
12-23 09: 42: 53.719: DEBUG/dalvikvm (328): DexOpt : ne vérifie pas 'Lorg/kxml2/wap/wv/WV;': plusieurs définitions
12-23 09: 42: 53.719: DEBUG/dalvikvm (328): DexOpt: ne vérifie pas 'Lorg/xmlpull/v1/XmlPullParserException;' : plusieurs définitions
12-23 09: 42: 53.719: DEBUG/dalvikvm (328): DexOpt: ne vérifie pas 'Lorg/xmlpull/v1/XmlPullParserFactory;': plusieurs définitions
12-23 09: 42: 53.829: DEBUG/dalvikvm (328): DexOpt: charge 867ms, vérifie 1752ms, opte 108ms
12-23 09: 42: 54.029: DEBUG/installd (32): DexInv: --- END '/data/app/vmdl33143.tmp' (succès) ---

Ceci est l'erreur dans DDMS de l'émulateur android.

Maintenant, mon service Web & ressemble à ceci.

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; 
} 

classe principale du service Web est créé: -

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 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> 

Et maintenant Mon code Android.

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(); 
     } 
    } 
} 

S'il vous plaît aidez-moi.

Merci d'avance.

Répondre

4

Vous devez convertir le fichier en tableau d'octets et le passer au service sur le serveur faire l'inverse pour récupérer le fichier.

+0

Veuillez me dire comment l'utiliser dans Apache Axis. –

+0

Merci pour l'article, dégagé mon idée sur la façon d'envoyer des fichiers plus volumineux. –

+0

Désolé pour le retard Je suis occupé à coder ce service Web. Merci pour la réponse. –

0

Vous pouvez utiliser la technologie Java EE 6, elle répond à vos besoins bien. Il suffit de créer un service web, qui retournera un tableau d'octets dans une réponse sur GET.

Voir le manuel de this.

+0

Désolé je suis un peu confus entre quelle API de service Web à utiliser.Comme j'utilise eclipse qui a construit en soutien à Apache Axis.Pouvez-vous s'il vous plaît m'en parler.Ou s'il vous plaît faire attention aux différentes API utilisées dans la technologie de service web. –

+0

l'IDE est pas si important ici, le plus important est votre serveur, soutient-il vraiment Jee 6. –

+0

Je ne sais pas exactement, mais peut dire oui parce que je suis en utilisant Apache Tomcat 6.0.20 –

Questions connexes