2015-02-19 2 views
0

это мой сценарий: У меня есть сервис Rest, который имеет строковый параметр в части запроса, который будет десериализованным как сложный объект, который содержит байты []:Отправить длинный URI для отдыха обслуживания со стороной запроса

 [OperationContract] 
     [WebInvoke(Method = "PUT", 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "json?doc={doc}")] 
     string UploadDocument(string doc); 

Это мой UploadDocument inheritation:

public string UploadDocument(string doc) 
{ 
    if(string.IsNullOrEmpty(doc)) 
     return "ko"; 
    JavaScriptSerializer jscript = new JavaScriptSerializer(); 
    Document inputDocument = jscript.Deserialize<Document>(doc); 
    return "ok"; 
} 

Мне нужно позвонить из клиента, в котором я прочитал содержимое файла, и я поставил этот в параметре:

JavaScriptSerializer jscript = new JavaScriptSerializer(); 
      Document newComp = jscript.Deserialize<Document>(test); 
      newComp.Content = File.ReadAllBytes(@"D:\Test\PdfParse\test.pdf"); 
      newComp.filename = "test.pdf"; 

      test = jscript.Serialize(newComp); 
      ASCIIEncoding encoder = new ASCIIEncoding(); 
      byte[] data = encoder.GetBytes(test); 
      WebRequest request = WebRequest.Create("http://localhost/DocumentUpload/DocumentUpload.svc/json?doc="); 
      request.Method = "POST"; 
      request.ContentType = "application/json"; 
      request.ContentLength = data.Length; 

      Stream requestStream = request.GetRequestStream(); 
      requestStream.Write(data, 0, data.Length); 
      requestStream.Close(); 
      WebResponse wr = request.GetResponse(); 

      using (StreamReader sw = new StreamReader(wr.GetResponseStream())) 
      { 
       test = (sw.ReadToEnd()); 

      } 

Вопрос Если добавить «тест» содержание в WebRequest.Create URL-адрес слишком длинный, но писать его requestStream остальное обслуживание вернуться мне, что «документ» всегда пуст. Каким образом я могу передать параметр?

ответ

0

Вы можете использовать в своем методе тип носителя multipart_form_data. В этом случае вы можете передавать потоки прямо в свой код.

Я думаю, что эта ссылка wuill поможет вам: http://www.briangrinstead.com/blog/multipart-form-post-in-c

Успехов

+0

Здравствуйте ... это приводит? ты пытался? –

 Смежные вопросы

  • Нет связанных вопросов^_^