2017-06-28 1 views
0

POST Request JavaPOST-Anforderung JSON-Parser Java

Ich habe diesen Beitrag lesen, wie eine POST-Anforderung in Java zu tun. Ich verstehe nicht, wie ich das in einem JSON-Parser implementieren kann. Dies ist, was ich versuchte, so weit:

public class JSONParser { 
    private String read(BufferedReader bufferedReader) throws IOException { 
     //Creates new StringBuilder to avoid escaping chars 
     StringBuilder stringBuilder = new StringBuilder(); 
     //Gets the currentLine 
     String currentLine; 
     while((currentLine = bufferedReader.readLine()) !=null){ 
      //Adds the currentLine to the stringBuild if the currentLine is not null 
      stringBuilder.append(currentLine); 
     } 
     //Returns the StringBuilder is String format 
     return stringBuilder.toString(); 
    } 

    public JSONObject readJsonFromUrl(String JSONurl) throws IOException, JSONException { 
     InputStream url = new URL(JSONurl).openStream(); 
     try { 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url)); 
      String jsonText = read(bufferedReader); 
      JSONObject json = new JSONObject(jsonText); 
      return json; 
     } finally { 
      url.close(); 
     } 
    } 

    public void printJSON() throws IOException, JSONException { 
     JSONObject json = readJsonFromUrl("http://grwn.ddns.net:1337/locations"); 
     System.out.print(json); 

     //for (Integer i = 0; i < json.getJSONArray("damage_or_theft_car").length(); i++) { 
     // System.out.println(json.getJSONArray("damage_or_theft_car") 
     //.getJSONObject(i).get("hood_id")); 
     //} 
    } 
} 

Wenn ich diesen Code ausführen mit einem Link, der nicht eine POST-Anforderung erfordert es funktioniert gut, aber wenn ich diesen Code ausführen auf einem Link, der eine POST-Anfrage benötigt Ich erhalte den folgenden Fehler:

Exception in thread "main" java.io.FileNotFoundException: http://grwn.ddns.net:1337/locations 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1872) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474) 
    at java.net.URL.openStream(URL.java:1045) 
    at com.company.JSONParser.readJsonFromUrl(JSONParser.java:30) 
    at com.company.JSONParser.printJSON(JSONParser.java:42) 
    at com.company.Main.main(Main.java:33) 

Könnte mir jemand helfen oder mir in die richtige Richtung zeigen?

+0

Der Grund, warum Sie FileNotFoundE erhalten, liegt wahrscheinlich daran, dass der Antwortcode 404 lautet. Haben Sie eine andere Postanforderung ausprobiert, die nicht zu einer 404-Antwort führt? – semywow

+0

@semywow Es wird keine POST-Anfrage gesendet, da ich nicht weiß, wie –

Antwort

1

Ich denke, Sie müssen angeben, dass Sie eine POST-Anfrage nach dem Öffnen der Verbindung machen möchten, vielleicht etwas wie dies versuchen.

+0

BufferReader nicht auf java.io.inputstream angewendet werden kann –

+0

Sie könnten eine inputStreamReader-Instanz und dann einen BufferReader wie Sie erstellen. Ich kann es nicht testen, da ich auf einem Telefonat bin. – gugge

+0

Ich habe es schon behoben. Ich werde Ihre Antwort in einer Sekunde bearbeiten und akzeptieren! –

0

Mögliche Ursachen für dieses Problem sind möglicherweise eine der folgenden Ursachen; 1) Nichts lesen/Abruf von url 2) Überprüfen Sie die Proxy-Einstellungen, könnte etwas auf Proxy für den Zugriff auf über url 3) Hostname Mapping konfiguriert sein fehlt auf dem Host-

Einige der Möglichkeiten, dies manuell zu überprüfen sind wie folgt; 1) Versuchen Sie, URL aus dem Web-Browser mit Proxy-Einstellung, sehen Sie, ob Sie die gewünschte rohe JSON 2) Versuchen Sie, URL aus dem Webbrowser ohne Proxy-Einstellung, sehen Sie, ob Sie die gewünschte rohe JSON 3 erhalten können) Wenn Schritt 1) ​​oder Schritt 2) erfolgreich ist, versuchen Sie dasselbe aus Ihrem Java-Code

Verwandte Themen