我必須發送文件到我的webservice,但webservice假定文件(byte Array)爲base64Binary。在Java中編碼base64並在C#中解碼
編碼之前,byteArrayFile作爲常規文件保存在磁盤上。 (我這樣做只是爲了測試)
所以,在我的Java客戶端,web服務,我送的信息是這樣的:
String file = new sun.misc.BASE64Encoder().encode(byteArrayFile);
port.sendFileToWebService(file);
的Web服務已經解碼的信息,並保存接收磁盤上的文件。
[WebMethod]
public string sendFileToWebService(string file)
{
string dirname = HttpContext.Current.Request.PhysicalApplicationPath + "\\Attachments\\";
if (!System.IO.Directory.Exists(dirname))
{
System.IO.Directory.CreateDirectory(dirname);
}
string filename = dirname + "/" + "file.sim";
WebClient myWebClient = new WebClient();
myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] byteArray = null;
byteArray = Convert.FromBase64String(file.Replace("\n", ""));
byte[] responseArray = myWebClient.UploadData(filename, "POST", byteArray);
return "Webservice says OK";
}
的問題是:
保存在磁盤上的文件(在編碼之前)和文件用C#解碼不等於。 我不知道這是Java編碼還是C#解碼的問題。
任何建議,包括更改文件類型或邏輯過程,都將不勝感激。
在此先感謝!
編輯 - 文件比較:
Original File http://img819.imageshack.us/img819/820/originalu.png
Decoded File (after Java encoding) http://img826.imageshack.us/img826/3184/processed.png
原始文件被保存在我的本地磁盤上。另一個文件發送給Webservice,將文件保存在服務器磁盤上。我可以訪問這兩個位置並使用Notepad ++打開文件,並確認兩個文件的大小和內容都不相同。 – CalypsOOO 2010-08-04 22:23:24
你爲什麼在你的C#代碼中使用WebClient? – nos 2010-08-04 22:26:19
我不確定...我從論壇中獲取此代碼。 – CalypsOOO 2010-08-04 22:37:29