это мой сценарий: У меня есть сервис 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 остальное обслуживание вернуться мне, что «документ» всегда пуст. Каким образом я могу передать параметр?
Здравствуйте ... это приводит? ты пытался? –