2010-03-17 4 views
0
try 
{ 
    const string siteURL = "http://ops.epo.org/2.6.1/soap-services/document-retrieval"; 
    const string docRequest = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><soap:Body><document-retrieval id='EP  1000000A1 I ' page-number='1' document-format='SINGLE_PAGE_PDF' system='ops.epo.org' xmlns='http://ops.epo.org' /></soap:Body></soap:Envelope>"; 

    var request = (HttpWebRequest)WebRequest.Create(siteURL); 
    request.Method = "POST"; 
    request.Headers.Add("SOAPAction", "\"document-retrieval\""); 
    request.ContentType = " text/xml; charset=utf-8"; 


    Stream stm = request.GetRequestStream(); 
    byte[] binaryRequest = Encoding.UTF8.GetBytes(docRequest); 
    stm.Write(binaryRequest, 0, docRequest.Length); 
    stm.Flush(); 
    stm.Close(); 
    var memoryStream = new MemoryStream(); 
    WebResponse resp = request.GetResponse(); 
    var buffer = new byte[4096]; 
    Stream responseStream = resp.GetResponseStream(); 
    { 
     int count; 
     do 
     { 
      count = responseStream.Read(buffer, 0, buffer.Length); 
      memoryStream.Write(buffer, 0, count); 
     } while (count != 0); 
    } 
    resp.Close(); 
    byte[] memoryBuffer = memoryStream.ToArray(); 
    System.IO.File.WriteAllBytes(@"E:\sample12.pdf", memoryBuffer); 

} 
catch (Exception ex) 
{ 
throw ex; 
} 

Le code ci-dessus est de récupérer le pdf webresponse.It fonctionne bien aussi longtemps que la demande reste canstant,webservice question de demande avec des entrées de demande dynamiques

const string docRequest = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><soap:Body><document-retrieval id='EP  1000000A1 I ' page-number='1' document-format='SINGLE_PAGE_PDF' system='ops.epo.org' xmlns='http://ops.epo.org' /></soap:Body></soap:Envelope>"; 

mais comment récupérer la même chose avec des demandes dynamiques . Lorsque le code ci-dessus est modifié pour accepter des entrées dynamiques comme,

[WebMethod] 
public string DocumentRetrivalPDF(string docid, string pageno, string docFormat, string fileName) 
{ 
    try 
    { 
     ........ 
     ....... 
     string docRequest = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><soap:Body><document-retrieval id=" + docid + " page-number=" + pageno + " document-format=" + docFormat + " system='ops.epo.org' xmlns='http://ops.epo.org' /></soap:Body></soap:Envelope>"; 

     ...... 
     ........ 
    return "responseTxt"; 
    } 
    catch (Exception ex) 
    { 
     return ex.Message; 
    } 

    } 

Il retourner une « erreur interne du serveur: 500 » quelqu'un peut me aider à ce ???

+0

Veuillez apprendre à formater votre code. Il y avait un guide sur la page quand vous avez posé votre question. Lisez-le s'il vous plaît. –

Répondre

0

Erreur de serveur interne signifie simplement qu'il y a un problème sur le serveur. Cela signifie généralement que le serveur a levé une exception qui n'a pas été gérée.

Rechercher dans les journaux d'événements Windows une réponse. En particulier, regardez dans le journal des événements d'application. En passant, votre code est plutôt mauvais.

  • Toutes les classes IDisposable doivent être instanciées dans using blocs. "Lancer ex" vient gâcher votre pile. Débarrassez-vous de cet essai/catch entièrement.