2017-02-17 2 views
1

Мне нужно получить данные с этого сайта http://www.speech.cs.cmu.edu/cgi-bin/tools/lmtool/runКак создать и отправить Multipart запрос с текстовым файлом В Android

Но я получаю это «[ERRO] Проблемы с корпусом;. Не могут продолжаться, пожалуйста check diagnostics [0 0] "Когда я пытаюсь отправить текстовый файл на сайт.

Вот мой код:

String fileUrl = "/sdcard/fish.txt"; 
     File logFileToUpload = new File(fileUrl); 
     final String BOUNDERY = "------WebKitFormBoundary4Pn8WfAaV8Bv3qqy"; 
     final String CRLF = "\r\n"; 
     // MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
     StringBuilder sbBody_1 = new StringBuilder(); 
     sbBody_1.append(BOUNDERY + CRLF); 
     sbBody_1.append("Content-Disposition: form-data; name=\"formtype\"" + CRLF); 
     sbBody_1.append(CRLF); 
     sbBody_1.append("simple"); 
     sbBody_1.append(BOUNDERY + CRLF); 
     sbBody_1.append("Content-Disposition: form-data; name =\"corpus\""+"filename=\"fish\"" + CRLF); 
     //sbBody_1.append("Content-Disposition: form-data; filename=\"fish\"" + CRLF); 
     String str1="aaa"; 
     sbBody_1.append(CRLF); 
     //sbBody_1.append(str1); 
     //sbBody_1.append(CRLF); 
     //sbBody_1.append(BOUNDERY + "--"); 
     StringBuilder sbBody_2 = new StringBuilder(); 
     //sbBody_2.append("pratik"); 
     sbBody_2.append(BOUNDERY + "--"); 
     URL url = new URL("http://www.speech.cs.cmu.edu/cgi-bin/tools/lmtool/run"); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setRequestMethod("POST"); 
     // connection.addRequestProperty(reqEntity.getContentType().getName(), reqEntity.getContentType().getValue()); 
     connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary4Pn8WfAaV8Bv3qqy"); 
     // connection.setChunkedStreamingMode(0); 
     OutputStream out = new BufferedOutputStream(connection.getOutputStream()); 
     out.write(sbBody_1.toString().getBytes()); 
     //byte[] bFile = new String(getBytesFromFile(Files1)).getBytes(); 
     // System.out.println(""+bFile); 
     FileInputStream inputStreamToLogFile = new FileInputStream(logFileToUpload); 
     int bytesRead; 
     byte[] dataBuffer = new byte[1024]; 
     while((bytesRead = inputStreamToLogFile.read(dataBuffer)) != -1) { 
      out.write(dataBuffer, 0, bytesRead); 
      System.out.println("output"+dataBuffer +bytesRead); 
     } 
     out.write(sbBody_2.toString().getBytes()); 
     //out.write(CRLF.getBytes()); 
     out.flush(); 
     out.close(); 
     BufferedReader bips = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
     String temp = null; 
     while ((temp = bips.readLine()) != null) { 
      System.out.println("output"+temp); 
      ((TextView) findViewById(R.id.textview1)) 
        .setText(temp); 
     } 
     bips.close(); 
     connection.disconnect(); 

ответ

1

Это лучше использовать OkHttp для сетевых запросов. Вы можете попробовать this example для получения дополнительной информации.

+0

Ошибки же: [_ ERRO_] Проблемы с корпусом; не может продолжаться. Пожалуйста, проверьте диагностику [0 0] –

+0

Пожалуйста, покажите свой код с помощью okhttp – MaxV

1

Спасибо за вашу помощь @MaxV я sloved моей проблемы с помощью OkHttp и Постмана

Смежные вопросы