Json POST-REQUEST

Genkin

Aktives Mitglied
Hallo,

ich soll an eine Schnittstelle (https URL) ein Json POST-METHODE absenden. Die Schnittstelle returned dann ein Json Objekt zurück, dass ich ausgeben lassen möchte.

Der Code unten gibt mir folgende Fehlermeldung:

Java:
{"error":true,"errortext":"field \u00b4json\u00b4 not found in post"}

Code:
Java:
package API;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class INSEL {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        String body = "bid=" + URLEncoder.encode( "333", "UTF-8" ) + "&" +
                  "getorder=" + URLEncoder.encode( "1", "UTF-8" );

    URL url = new URL( ".../index.php/" );
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod( "POST" );
    connection.setDoInput( true );
    connection.setDoOutput( true );
    connection.setUseCaches( false );
    connection.setRequestProperty( "Content-Type",
                                   "application/x-www-form-urlencoded" );
    connection.setRequestProperty( "Content-Length", String.valueOf(body.length()) );

    OutputStreamWriter writer = new OutputStreamWriter( connection.getOutputStream() );
    writer.write( body );
    writer.flush();


    BufferedReader reader = new BufferedReader(
                              new InputStreamReader(connection.getInputStream()) );

    for ( String line; (line = reader.readLine()) != null; )
    {
      System.out.println( line );
    }

    writer.close();
    reader.close();
   
    }

}

Bin um jede Hilfe dankbar!
 

mrBrown

Super-Moderator
Mitarbeiter
Der Fehlermeldung nach erwartet die Schnittstelle im Body ein Feld namens "json", das gibts bei dir nicht.

Wenn das format mit "x-www-form-urlencoded" stimmt, erwartet das u.U. einfach ein Feld namens "json", dessen Inhalt der als JSON formatierte Payload ist.

Sinnvoller wäre aber vermutlich, das direkt als JSON zu schicken?
 

Genkin

Aktives Mitglied
Der Fehlermeldung nach erwartet die Schnittstelle im Body ein Feld namens "json", das gibts bei dir nicht.

Wenn das format mit "x-www-form-urlencoded" stimmt, erwartet das u.U. einfach ein Feld namens "json", dessen Inhalt der als JSON formatierte Payload ist.

Sinnvoller wäre aber vermutlich, das direkt als JSON zu schicken?


Danke dir für deine Antwort.

Ich habe keine Ahnung von Json. Der Code stammt aus "Java ist auch eine Insel". Bin seit 2 Tagen am googlen und experimentiere mit Code Schnippseln rum, aber ich komm einfach nicht dahinter.

Hast du vielleicht eine gute Anleitung, oder irgendein Codeschnippsel, der passen würde, wenn ich ihn umändere?

Danke dir.
 

mihe7

Top Contributor
Verwende ein Tool wie curl oder postman, mit dem Du den Request erstmal testen kannst.

Zum Beispiel:
Code:
curl -H "Content-Type: application/x-www-form-urlencoded" -X POST -F 'json={"bid":333,"getorder":1}' http://...index.php

oder, wenn bid und getorder Formularfelder sein sollen, ggf. auch:

curl -H "Content-Type: application/x-www-form-urlencoded" -X POST -F 'json={}' -F 'bid=333' -F 'getorder=1' http://...index.php
 

Genkin

Aktives Mitglied
Verwende ein Tool wie curl oder postman, mit dem Du den Request erstmal testen kannst.

Zum Beispiel:
Code:
curl -H "Content-Type: application/x-www-form-urlencoded" -X POST -F 'json={"bid":333,"getorder":1}' http://...index.php

oder, wenn bid und getorder Formularfelder sein sollen, ggf. auch:

curl -H "Content-Type: application/x-www-form-urlencoded" -X POST -F 'json={}' -F 'bid=333' -F 'getorder=1' http://...index.php


Hab ich gemacht. Bekomme wieder die selbe Fehlermeldung wie oben...
 

Genkin

Aktives Mitglied
Nein sorry...

Die Schnittstelle erwartet ein Json Object und gibt dann eins zurück. Dieses enthält dann die Infos die ich brauche.
bid und getorders müssen quasi als Json an die Schnittstelle übergeben werden
 

mihe7

Top Contributor
Naja, dann probier mal
Code:
curl -H "Content-Type: application/json" -X POST -d '{"bid":333,"getorder":1}' http://...index.php

oder (weil die Fehlermeldung etwas seltsam ist)

curl -H "Content-Type: application/json" -X POST -d '{"json":{}}' http://...index.php
 

Genkin

Aktives Mitglied
Es gibt keine Doku :rolleyes:
Es gibt:

1. Schnittstellenlink

2. Die Info, dass die Schnittstelle mit POST-request unter dem Key "json" abgesendete json-objekte entgegennimmt und ein json-objekt
zurückgibt.

3. Parameter bid und getorder/s

4. {"error":true,"errortext":"field \u00b4json\u00b4 not found in post"}


Das wars
 

mihe7

Top Contributor
Die Infos sind weder eindeutig noch ausreichend.

Du weißt nicht, was das JSON-Objekt enthalten soll (ein JSON-Objekt ist z. B. bereits durch {} gegeben). Du weißt nicht, wie das Key-Value-Paar kodiert werden soll (selbst in einem JSON-Objekt, als Formularfeld oder evtl. sogar als URL-Parameter, vielleicht aber auch ganz anders?!?) Du weißt nicht, wie die Parameter anzugeben sind (im JSON-Objekt, als Formularfelder, als URL-Parameter oder ganz anders?!?) Das ist ein einziges Ratespiel.

Deinem Eingangspost nach hat Dir ja irgendwer die Aufgabe gegeben. Der sollte dann doch auch die notwendigen Infos dazu haben. Du kannst Dich natürlich auch hinsetzen und alles mögliche durchprobieren. Effizient ist das aber nicht :)
 

Genkin

Aktives Mitglied
Sry war gestern etwas spät geworden.

getorder returned:

Java:
int; Orderid; Liefert Details zur Bestellung
return:
{ "Bestellnummer":"Bestellnummer",
"Besteller":"BestellerID", "Zeit":"YYYY-MM-DD HH:MM:SS", "Artikel":
{"Artikel1": {"Artikelnummer":"Artikelnummer","Anzahl":"be-
stellte Anzahl","Preis":"Preis pro Stück"}, "Artikel2":
{"Artikelnummer":"Artikelnummer","Anzahl":"be- stellte Anzahl","Preis":"Preis pro Stück"}
} }

und getorders
Java:
int; liefert alle Bestellnummern mit neuerem Datum seit dem Datum der Bestellung, deren Bestellnummer übergeben wurde zurück; für die alle Bestellungen „0“ als Referenzbestellung verwenden
return: {"Bestellnummern":["Bestellnr1","Bestellnr2"]}

und bid muss immer mit angegeben werden. (BenutzerID)
 
Zuletzt bearbeitet:

Genkin

Aktives Mitglied
Hab auch versucht in die URL die parameter mit nem führenden „?“ einzufügen, also GET
Kommt die selbe Fehlermeldung.
Ich hab das so verstanden, dass ich die richtigen Parameter als Json Objekt übergeben soll. Wenn die Parameter angenommen werden, liefert es mir die return Ausgabe zurück.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JSON Parsing von youtube video comment replies Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
O JSON in Integer parsen Allgemeine Java-Themen 5
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8
D JSON to String Allgemeine Java-Themen 31
K Große JSON-Dateien schnell und effizient verarbeiten Allgemeine Java-Themen 16
F Json in sql speichern und lesen Allgemeine Java-Themen 10
F Alte Passörter mit Gson und Json in SQL speichern? Allgemeine Java-Themen 5
C Nested JSON in Java ansprechen [Wordpress Rest Api] Allgemeine Java-Themen 26
J Frage zum Entwurf / json-Datenmodell Allgemeine Java-Themen 8
2 mehrere Json Werte Parsen Allgemeine Java-Themen 3
agent47 JSON verarbeiten Allgemeine Java-Themen 4
G JSON parsen Allgemeine Java-Themen 3
Thallius Simple JSON Parser Error null Allgemeine Java-Themen 6
J Java JSON-Datei aus .Zip auslesen und Download mit Progress Bar Allgemeine Java-Themen 20
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
M Changelog aus JSON Allgemeine Java-Themen 2
M JSON NullPointerException Allgemeine Java-Themen 5
B json zu java class Allgemeine Java-Themen 2
F Java Restapi JSON Allgemeine Java-Themen 5
G Json-Lib NoClassDefFoundError Allgemeine Java-Themen 3
O JSON String bauen aus Liste Allgemeine Java-Themen 2
O Vorteile von GSON ggü. JSON "per Hand" Allgemeine Java-Themen 4
O JSON: ClassNotFound Allgemeine Java-Themen 8
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
J Lucene suche in Json (CouchDB) Allgemeine Java-Themen 2
K Regex JSON Allgemeine Java-Themen 3
G JSON Object auslesen Allgemeine Java-Themen 1
M Maven Deutsche Post API implementieren Allgemeine Java-Themen 2
P REST- Services GET/PUT/POST/DELETE Allgemeine Java-Themen 6
J Post: #1could not create the java virtual machine etc Allgemeine Java-Themen 6
J Übergabe von post request Parametern Allgemeine Java-Themen 9
S http POST überwachen Allgemeine Java-Themen 2
S OutputStream via POST senden Allgemeine Java-Themen 4
dayaftereh HttpClient Post, Get Cookie Allgemeine Java-Themen 1
P POST Problem Allgemeine Java-Themen 5
A POST Allgemeine Java-Themen 6
J httpclient: Post-method aber trotzdem "URI to long&quot Allgemeine Java-Themen 4
thE_29 CGI Seite + Post Methoden Allgemeine Java-Themen 2
P URL mit POST variablen aufrufen Allgemeine Java-Themen 5
P Post-Parameter übergeben Allgemeine Java-Themen 3
N Servlets: Formulardaten auslesen (POST) - mehr Informationen Allgemeine Java-Themen 4
A Formular POST übergabe an Servlet Allgemeine Java-Themen 4
Thallius HTTPS Request mit unbekannter Instanz Allgemeine Java-Themen 24
J Threads HTTP Request (Thread) dauert lange - in Android Allgemeine Java-Themen 3
T Basic Request von php zu Java Allgemeine Java-Themen 3
K http request get Allgemeine Java-Themen 2
W Request elevated rights (Vista) Allgemeine Java-Themen 9
A Threads zum Verringern der Latenzzeiten bei HTTP GET Request Allgemeine Java-Themen 8
G Array/String aus Request wieder in Array konvertieren Allgemeine Java-Themen 2
M Textdatei per Request lesen? Allgemeine Java-Themen 2
S HTTPUnit Test Fehler: Error on HTTP request: 500 Internal Er Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben