2010-03-17 2 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; 
} 

код выше, чтобы получить PDF webresponse.It работает отлично, пока запрос остается canstant,вебсервис вопрос запрос с динамическими входами запроса

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

, но как получить то же самое с динамическими запросами , Когда выше код будет изменен, чтобы принимать динамические входы, как,

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

    } 

Он возвращает «INTERNAL SERVER ERROR: 500» Кто-нибудь может помочь мне в этом ???

+0

Пожалуйста, изучите формат кода. Когда вы задали свой вопрос, на странице было руководство. Пожалуйста, прочитайте его. –

ответ

0

Внутренняя ошибка сервера означает, что на сервере что-то не так. Обычно это означает, что сервер выбрал исключение, которое не было обработано.

Просмотрите журналы событий Windows для получения ответа. В частности, просмотрите журнал событий приложения.

Кстати, ваш код довольно плох.

  • Все классы IDisposable должны быть созданы в using блоках.
  • «throw ex» просто испортил ваш стек. Избавиться от этого try/catch полностью.
Смежные вопросы