2017-06-22 1 views
0

I verwendet Httppost und HttpURLConnection in Android die Anforderung mit folgenden Header und Inhalt zu senden:Wie die Option Kopf- und Inhalt in HTTP POST resquest in Android setzen

Headers: api_key: 9a8akx8badkaxxxx, Geschwindigkeit: 0, Stimme: männlich, Prosodie: 1, Cache-Control: no-cache

Inhalt (mit Content-Type: text/plain): Hallo an alle

Diese meinen Code sind: * Mit der Httppost:

 HttpClient client = new DefaultHttpClient(); 
     HttpPost post = new HttpPost(requestURL); 
     post.addHeader("api_key", "9a8akx8badkaxxxx"); 
     post.addHeader("speed", "0"); 
     post.addHeader("voice", "male"); 
     post.addHeader("prosody", "1"); 
     post.addHeader("Cache-Control", "no-cache"); 
     List <NameValuePair> nvps = new ArrayList <NameValuePair>(); 
     nvps.add(new BasicNameValuePair("data[body]", "Hello everyone")); 
     AbstractHttpEntity ent= null; 

     ent = new UrlEncodedFormEntity(nvps, HTTP.UTF_8); 

     ent.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); 
     ent.setContentEncoding("UTF-8"); 
     post.setEntity(ent); 
     post.setURI(new URI("http://api.openfpt.vn/text2speech/v4")); 
     HttpResponse response =client.execute(post); 

* Mit dem HttpURLConnection:

URL url = new URL(requestURL); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setDoOutput(true); 
    conn.setInstanceFollowRedirects(false); 
    conn.setRequestMethod("POST"); 
    conn.setRequestProperty("api_key", "9a8akx8badkaxxxx"); 
    conn.setRequestProperty("Content-Type", "text/plain"); 
    conn.setRequestProperty("speed", "0"); 
    conn.setRequestProperty("voice", "male"); 
    conn.setRequestProperty("prosody", "1"); 
    conn.setRequestProperty("Cache-Control", "no-cache"); 

und dann weiß ich nicht, die Methode, den Inhalt zu setzen "Hallo an alle" in HttpURLConnection

Das Ergebnis immer fehler. Aber wenn ich den Add-on HttpRequester in Firefox verwende, ist die Antwort in Ordnung. Bitte helfen Sie mir in Http Set anfordern Android

+0

können Sie Ihren Code veröffentlichen, damit wir sehen können, wie Sie Setze deine Header und Inhalte? Im Allgemeinen verwende ich: httppost.setHeader ("String", "String" + whatyNeeded); um die Header zu setzen. –

+1

Ich poste einfach meinen Code – davidnth12171

Antwort

0

dieses Versuchen Sie, den Content-Type gesetzt zu erstellen und:

 HttpPost httppost = new HttpPost(builder.getUrl()); 
     httppost.setHeader(HTTP.CONTENT_TYPE, 
       "text/plain;charset=UTF-8"); 

Um beliebige Header gesetzt, glaube ich, sollte es so geschehen:

 httppost.setHeader("api_key", "9a8akx8badkaxxxx"); 
     httppost.setHeader("speed", "0"); 
     httppost.setHeader("voice", "male"); 
     httppost.setHeader("voice", "male"); 
     httppost.setHeader("prosody", "1"); 
     httppost.setHeader("Cache-Control", "no-cache"); 

 List<NameValuePair> nameValuePairs = new ArrayList<>(1); 
     // nameValuePairs.add(new BasicNameValuePair("Fn",function)); 
     // nameValuePairs.add(new BasicNameValuePair("IdDevice",IdDevice)); 
:

Um die Daten, wählen Sie einen Namen für das Postfeld (hier Fn und IdDevice mit) 210

EDIT START

  nameValuePairs.add(new BasicNameValuePair("Content","Hello everyone")); 

EDIT END

 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

Und schließlich die Post-Anforderung ausführen:

 // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 
+0

Aber Sie vermissen die "Inhalte (mit Content-Type: text/plain): Hallo an alle". Ich weiß nicht, wie Sie den Inhalt zu httppost hinzufügen können. – davidnth12171

+0

Sie möchten einige Daten auf Ihrem Server veröffentlichen, ist das korrekt? Wenn Sie dies tun, sind die Daten, die Sie senden, immer in einem Feld, wie in einem Formular oder etwas. Mit php in Ihrem Server (nur als Beispiel) werden Sie nach der Variablen $ _POST ['something_in_here'] suchen und diese Variable hat den Post-Inhalt. In dem Beispiel, das ich Ihnen gegeben habe, senden wir 2 Felder (Fn und IdDevice), als wären sie von einem Formular gepostet worden, so dass Sie sie auf dem Server bekommen können, indem Sie auf $ _POST ['Fn'] und $ _POST ['IdDevice'] zugreifen. . Ich hoffe es hilft. –

+0

Ich werde die Antwort mit der Variable "Inhalt" mit dem Wert "Hallo an alle" aktualisieren. Wenn es hilft, bitte akzeptieren Sie die Antwort. –