2013-03-14 91 views
2

我試圖將存儲在Android手機上的一些二進制數據作爲文件發送到在PHP中創建的Web服務。什麼編碼可以用來將二進制數據發送到PHP?

我一直在使用MultiPart以及ValuePair但沒有運氣嘗試.. !!

什麼我也做了是在Java中創建一個控制檯應用程序,其內容從靜態位置上的Windows二進制文件,並使用相同的PHP服務,它使用MultiPart工作正常,下面是該代碼:

MultipartEntity mpEntity = new MultipartEntity(); 
ContentBody cbFile = new FileBody(file,"text/plain");  
mpEntity.addPart("qLog", new StringBody(readFileAsString(file.getAbsolutePath()), 
     Charset.defaultcharset))); 
mpEntity.addPart("fileName", new StringBody(fileName)); 
mpEntity.addPart("personid", new StringBody(userid)); 

和功能readFileAsString()是:

private String readFileAsString(String filePath) throws IOException { 
    StringBuffer fileData = new StringBuffer(); 
    BufferedReader reader = new BufferedReader(new FileReader(filePath)); 
    char[] buf = new char[1024]; 
    int numRead=0; 
    while ((numRead=reader.read(buf)) != -1) { 
     String readData = String.valueOf(buf, 0, numRead); 
     fileData.append(readData); 
    } 
    reader.close(); 

    return fileData.toString(); 
} 

但我這樣做是在Android時,它不維護二進制值。我認爲是由於Android中的默認編碼原因是UTF-8。

你能幫忙嗎?我如何獲取從Android發送到PHP服務的二進制數據?

回答

0

可以使用InputStreamBody,而不是StringBody

MultipartEntity mpEntity = new MultipartEntity(); 
mpEntity.addPart("qLog", new InputStreamBody(new FileInputStream(file), 
     file.getName()); 
mpEntity.addPart("fileName", new StringBody(fileName)); 
mpEntity.addPart("personid", new StringBody(userid)); 

編輯

或者你可以使用FileBody更簡潔。

+0

感謝您的評論。嘗試了他們兩個..仍然遇到問題。 – 2013-03-14 09:35:07