it-swarm.com.de

Senden Sie Daten im Anforderungshauptteil mit HttpURLConnection

Ich verwende HttpURLConnection, um eine POST) - Anforderung an einen in meinem lokalen System implementierten lokalen Dienst zu senden, der mit Java Spark .I Ich möchte einige Daten im Anfragetext senden, wenn ich den POST über die HttpURLConnection aufrufe, aber jedes Mal, wenn der Anfragetext im Java Spark ist null. Unten ist der Code, den ich dafür benutze

Java Spark POST Service Handler

post("/", (req, res) -> { System.out.println("Request Body: " + req.body()); return "Hello!!!!"; });

HTTPClass Den Nachruf tätigen

`public class HTTPClassExample{
   public static void main(String[] args) {
        try{
            URL url = new URL("http://localhost:4567/");
            HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
            httpCon.setDoOutput(true);
            httpCon.setRequestMethod("POST");
            httpCon.connect();
            OutputStream os = httpCon.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");    
            osw.write("Just Some Text");
            System.out.println(httpCon.getResponseCode());
            System.out.println(httpCon.getResponseMessage());
            osw.flush();
            osw.close();  
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
}`
11
utkarsh31

Sie sollten httpCon.connect(); nur aufrufen, nachdem Sie Ihre Parameter in den Body geschrieben haben und nicht zuvor. Ihr Code sollte folgendermaßen aussehen:

URL url = new URL("http://localhost:4567/");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("POST");
OutputStream os = httpCon.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");    
osw.write("Just Some Text");
osw.flush();
osw.close();
os.close();  //don't forget to close the OutputStream
httpCon.connect();

//read the inputstream and print it
String result;
BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result2 = bis.read();
while(result2 != -1) {
    buf.write((byte) result2);
    result2 = bis.read();
}
result = buf.toString();
System.out.println(result);
15
Ricardo

Ich habe mit den angeforderten Daten im XML-Format gepostet und der Code sieht so aus. Sie sollten auch die Anforderungseigenschaft Accept und den Inhaltstyp hinzufügen.

URL url = new URL("....");
HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();

httpConnection.setRequestMethod("POST");
httpConnection.setRequestProperty("Accept", "application/xml");
httpConnection.setRequestProperty("Content-Type", "application/xml");

httpConnection.setDoOutput(true);
OutputStream outStream = httpConnection.getOutputStream();
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "UTF-8");
outStreamWriter.write(requestedXml);
outStreamWriter.flush();
outStreamWriter.close();
outStream.close();

System.out.println(httpConnection.getResponseCode());
System.out.println(httpConnection.getResponseMessage());

InputStream xml = httpConnection.getInputStream();