2017-05-03 15 views
0

JSON-Bodyを保持するHttp-PUT-Requestを送信したいが、そのボディを定義する方法がわからない。私は多くのことを知って試しましたが、常に同じ問題を抱えています。 Btw、私はすでに郵便配達員のput-requestをテストしましたが、それはうまくいきましたが、私はこの要求をJavaで実現できません。HTTP-PUT-Requestを送信してもステータスコードは200ですが

私の最新の試みは、次のようになります。応答コードはその後、問題ないはず200を、言う

String sURL = "http://localhost/Thingworx/Things/testAC/Properties/*"; 
HttpURLConnection urlConn; 
URL mUrl = new URL(sURL); 
urlConn = (HttpURLConnection) mUrl.openConnection(); 

//query should be the body 
String query = String.format("{\"datDate\":%s,\"txtFrom\": %s,\"txtTo\": %s,\"numFlightTimeDecimal\":%f,\"numSeatCapacity\":%d,\"numLoad\":%d,\"numDirt\":%f,\"numTotalFlightTime\":%f,\"numCummulatedDirt\":%f}", javaDate.toString(), txtFrom, txtTo, numFlightTimeDecimal, numSeatCapacity, numLoad, numDirt, numTotalFlightTime, numCumDirt); 
urlConn.setRequestMethod("PUT"); 
urlConn.setRequestProperty("appKey", "1042fdd2-8e85-4de1-9c92-d79ac24c1ffc"); 
urlConn.addRequestProperty("Content-Type", "application/json"); 
urlConn.setDoOutput(true); 

if (query != null) { 
    urlConn.setRequestProperty("Content-Length", Integer.toString(query.length())); 
    urlConn.getOutputStream().write(query.getBytes("UTF8")); 
} 

System.err.println(urlConn.getResponseCode()); 

。しかし、PUT-Requestはサーバー上の値を変更しません。要求には何の効果もありません。

ご協力ありがとうございました! Theresa

+0

受信アプリケーションは既知のアプリケーションですか?誰でも確認できるログを生成していますか? – DaSourcerer

+0

あなたはPostmanからjavaでコードを生成し、それを実行しようとすることができます。 Link:https://www.getpostman.com/docs/code_snippets –

+1

文字列にASCII以外の文字が含まれていると、長さの計算に失敗する... –

答えて

0
urlConn.setRequestMethod("PUT"); 

PUTにリクエストメソッドを設定します。

urlConn.setDoOutput(true); 

出力を有効にし、要求メソッドをPOSTに設定します。 Javadocを参照してください。あなたはこれを最初にする必要があり、最後にする必要はありません。

NBコンテンツの長さを設定しないでください。 Javaはあなたのためにそれを行います。

関連する問題