問題: 我有一個Java spring rest服務來上傳文件(大尺寸)。 我想使用.NET httpClient(或其他.net客戶端)來調用上傳服務。c#HttpClient上傳文件到spring rest服務
問題:
- 看來,發送大文件,最好的辦法是多部分的文件,什麼是關於互操作性?
- 如果不可能,最好的選擇是什麼?
謝謝!
問題: 我有一個Java spring rest服務來上傳文件(大尺寸)。 我想使用.NET httpClient(或其他.net客戶端)來調用上傳服務。c#HttpClient上傳文件到spring rest服務
問題:
謝謝!
這就是答案: 我可以從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;
}
HTTP是一個獨立於操作系統平臺和編程語言的標準,所以如果你的.net客戶符合標準,你不應該在互操作性方面有任何問題。
java的春天開機
@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()));
好吧,這是觀念,從邁克爾Teper [ASP.NET的WebAPI:如何與文件上傳執行多後使用WebApi HttpClient](http://stackoverflow.com/a/10744043)我將嘗試使用HttpClient API模擬多部分文件上傳文章。 – Donald
我並不熟悉.net客戶端庫,但我想它會生成標準的多部分發布請求。我猜,服務器端的java/spring服務不會對客戶端的類型做任何假設,只接受普通的多部分請求,所以他們應該一起工作。 – zagyi