2014-02-03 3 views
0

Я пытаюсь сделать HttpRequest типа POST с использованием Apache Java LIB 4.3.2, и у меня возникла проблема.Java HttpPost Body Apache 4.3.2

Там нет способа, чтобы установить тело ни значение параметра ...

Я пытаюсь установить FLAC бинарного на теле запроса после HTTP.

Вот мой пример кода:

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 




public class GoogleSpeech { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     try { 
      HttpClient client = new DefaultHttpClient(); 
      String getURL = "https://www.google.com/speech-api/v1/recognize?client=chromium&lang=pt-PT&maxresults=10"; 



      HttpPost get = new HttpPost(getURL); 

      get.setHeader("Content-Type", " audio/x-flac; rate=16000;"); 
      get.setHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7"); 



      HttpResponse responseGet = client.execute(get); 
      System.out.println(responseGet); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    } 

} 

ответ

2

Я не знаю, если я получил ваш вопрос правильно, но если вы хотите установить параметр к экземпляру HttpPost вот как это сделать.

я скопировал ваш первый части даже я нахожу немного Strage называть «получить» экземпляр HttpPost :)

String getURL = "https://www.google.com/speech-api/v1/recognize?client=chromium&lang=pt-PT&maxresults=10"; 
HttpPost get = new HttpPost(getURL); 
get.setHeader("Content-Type", " audio/x-flac; rate=16000;"); 
get.setHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7"); 

List<NameValuePair> formparams = new ArrayList<NameValuePair>(); 
formparams.add(new BasicNameValuePair("param1", "paramValue1")); // name and value of your param 
formparams.add(new BasicNameValuePair("param2", paramValue2)); // name and value of your param 
// and so on 
// create the encoded form 
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8"); 
// set it in the post request 
get.setEntity(entity); 

В случае, если вам нужно загрузить двоичный файл соу можно использовать MultipartEntity вместо UrlEncodedFormEntity. Он имеет метод addPart, который может использоваться для двоичного blob. Я не пробовал эту линию, но это должно быть что-то похожее на:

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
entity.addPart("file", new FileBody(new File("your path here"))); 
+0

Спасибо за ваш ответ, и если нет никаких параметров? просто значение? Я имею в виду: я просто хочу поместить двоичный флак в тело почтового метода. – TiagoM

+0

Я обновил ответ, включая ссылку на MultiPartEntity. Пожалуйста, смотрите. – elbuild

+0

Спасибо за ваш ответ, я его протестирую, скоро напишу – TiagoM

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