2013-04-12 3 views
4

Проблема: У меня есть служба весеннего отдыха Java для загрузки файла (большого размера). Я хочу использовать .NET httpClient (или другой .net-клиент) для вызова службы загрузки.C# HttpClient загружать файл в службу весеннего отдыха

Вопросы:

  1. кажется, что лучший вариант, чтобы отправить большой файл из нескольких частей файла, что о совместимости?
  2. Если бы это было невозможно, то какая лучшая альтернатива?

Спасибо!

ответ

4

Это ответ: Я могу отправить файл с многостраничным вложением с клиента C# в Java JAX Rest Webservice.

try 
     { 
      using (
      var client = new HttpClient()) 
      using (var form = new MultipartFormDataContent()) 
      { 
       using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { 
        using (var fileContent = new StreamContent(stream)) { 

         fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {FileName = fileName, DispositionType = DispositionTypeNames.Attachment, Name = "fileData"}; 

         form.Add(fileContent); 
         // only for test purposes, for stable environment, use ApiRequest class. 
         response = client.PostAsync(url, form).Result; 
        } 
       } 
      } 

      return response.RequestMessage != null ? response.ReasonPhrase : null; 
     } 
     catch (Exception ex) 
     { 
      TraceManager.TraceError("Post Asyn Request to " + url + " \n" + ex.Message, ex); 
      throw; 
     } 
1

HTTP - это стандарт, который не зависит от платформ ОС и языков программирования, поэтому у вас не должно быть проблем с совместимостью, если ваш .net-клиент соответствует стандартам.

+0

Хорошо, это идея, от Майкла тепер [ASP.NET WebAPI: как выполнить многослойную запись с возможностью загрузки файла с помощью WebApi HttpClient] (http://stackoverflow.com/a/10744043) Я попытаюсь смоделировать многопользовательскую загрузку файлов с помощью API HttpClient. – Donald

+0

Я не знаком с этой .net-клиентской библиотекой, но я полагаю, что он генерирует стандартный многостраничный пост-запрос. Я полагаю, служба java/spring на стороне сервера не делает никаких предположений о типе клиента, просто принимает обычные множественные запросы, поэтому они должны просто работать вместе. – zagyi

0

ява пружинный загрузочный

@RequestMapping(value="/upload", method=RequestMethod.POST) 
public @ResponseBody String upload(@RequestParam("FileParam") MultipartFile file){ 
    InputStream fromClient=file.getInputStream(); 
    ...do stuff with the database/ process the input file... 

C#

HttpClient client = new HttpClient(); 
MultipartFormDataContent form = new MultipartFormDataContent(); 
FileInfo file = new FileInfo(@"<file path>"); 
form.Add(new StreamContent(file.OpenRead()),"FileParam",file.Name); 
HttpResponseMessage response = await client.PostAsync("http://<host>:<port>/upload", form); 
Console.WriteLine(response.StatusCode); 
Console.WriteLine(response.ReasonPhrase); 
Console.WriteLine(response.ToString()); 
Console.WriteLine(Encoding.ASCII.GetString(await response.Content.ReadAsByteArrayAsync())); 
Смежные вопросы