2013-11-04 2 views
0

웹 서버에 mp3 파일을 업로드하고 문자열로 응답해야하지만 HTTP 응답이 415 오류가납니다. 콘텐츠 유형이 'multipart/form-data; boundary = * '이 (가) 예상되는 유형이 아니 었습니다'application/soap + xml; charset = utf-8 ': 415, 여기 내 코드가 있습니다. 왜 서버가이 형식을 거부합니까?415 android에서 파일을 업로드하는 중 오류가 발생했습니다.

public static int upLoad2Server(String sourceFileUri) { 
    String upLoadServerUri = "http://address:port/example/mex"; 
    // String [] string = sourceFileUri; 
    String fileName = sourceFileUri; 

    int serverResponseCode = 0; 
    HttpURLConnection conn = null; 
    DataOutputStream dos = null; 
    DataInputStream inStream = null; 
    String lineEnd = "\r\n"; 
    String twoHyphens = "--"; 
    String boundary = "*****"; 
    int bytesRead, bytesAvailable, bufferSize; 
    byte[] buffer; 
    int maxBufferSize = 1 * 1024 * 1024; 
    String responseFromServer = ""; 

    File sourceFile = new File(sourceFileUri); 
    if (!sourceFile.isFile()) { 
     Log.i("Huzza", "Source File Does not exist"); 
     return 0; 
    } 
    try { // open a URL connection to the Servlet 
     FileInputStream fileInputStream = new FileInputStream(sourceFile); 
     URL url = new URL(upLoadServerUri); 
     conn = (HttpURLConnection) url.openConnection(); // Open a HTTP 
                  // connection to 
                  // the URL 
     conn.setDoInput(true); // Allow Inputs 
     conn.setDoOutput(true); // Allow Outputs 
     conn.setUseCaches(false); // Don't use a Cached Copy 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Connection", "Keep-Alive"); 
     conn.setRequestProperty("ENCTYPE", "multipart/form-data"); 
     conn.setRequestProperty("Content-Type", 
       "multipart/form-data;boundary=" + boundary); 
     conn.setRequestProperty("uploaded_file", fileName); 
     dos = new DataOutputStream(conn.getOutputStream()); 

     dos.writeBytes(twoHyphens + boundary + lineEnd); 
     dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" 
       + fileName + "\"" + lineEnd); 
     dos.writeBytes(lineEnd); 

     bytesAvailable = fileInputStream.available(); // create a buffer of 
                 // maximum size 
     Log.i("Huzza", "Initial .available : " + bytesAvailable); 

     bufferSize = Math.min(bytesAvailable, maxBufferSize); 
     buffer = new byte[bufferSize]; 

     // read file and write it into form... 
     bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

     while (bytesRead > 0) { 
      dos.write(buffer, 0, bufferSize); 
      bytesAvailable = fileInputStream.available(); 
      bufferSize = Math.min(bytesAvailable, maxBufferSize); 
      bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     } 

     // send multipart form data necessary after file data... 
     dos.writeBytes(lineEnd); 
     dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

     // Responses from the server (code and message) 
     serverResponseCode = conn.getResponseCode(); 
     String serverResponseMessage = conn.getResponseMessage(); 

     Log.i("Upload file to server", "HTTP Response is : " 
       + serverResponseMessage + ": " + serverResponseCode); 
     // close streams 
     Log.i("Upload file to server", fileName + " File is written"); 
     fileInputStream.close(); 
     dos.flush(); 
     dos.close(); 
    } catch (MalformedURLException ex) { 
     ex.printStackTrace(); 
     Log.i("Upload file to server", "error: " + ex.getMessage(), ex); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    // this block will give the response of upload link 
    try { 
     BufferedReader rd = new BufferedReader(new InputStreamReader(
       conn.getInputStream())); 
     String line; 
     while ((line = rd.readLine()) != null) { 
      Log.i("Huzza", "RES Message: " + line); 
     } 
     rd.close(); 
    } catch (IOException ioex) { 
     Log.i("Huzza", "error: " + ioex.getMessage(), ioex); 
    } 
    return serverResponseCode; // like 200 (Ok) 

} // end upLoad2Server 

답변

0

코드는 다음과 같습니다

conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 

와 오류는이 될 Content-Type를 기대하고 있다고 머물고있다 :

application/soap+xml; charset=utf-8 

나는 당신이 설정하는 이유 - 검사 재 추천 콘텐츠 유형이 서버가 받아 들일 수있는 다른 것까지 허용합니다.

+0

서버 응답을 만들기 위해 코드를 어떻게 편집해야합니까? –

+0

다음 유형의 콘텐츠 유형을 변경하지만 여전히 동일한 415 EC를 얻지 만 – VVB

관련 문제