6

BESのURL(MDS_CS)にデータをプッシュしようとしています

コードにいくつかのリクエストヘッダーを設定してリクエストを送信すると、送信されたリクエストのヘッダーはnullに設定されます。

これが私のコードです:

        HttpURLConnection conn =(HttpURLConnection)url.openConnection();
        conn.setDoInput(true);//For receiving the confirmation
        conn.setDoOutput(true);//For sending the data
        conn.setRequestMethod("POST");//Post the data to the proxy
        conn.setRequestProperty("X-Rim-Push-ID", pushId);
        conn.setRequestProperty("Content-Type", "text/html");
        conn.setRequestProperty("X-Rim-Push-Title", "-message");
        conn.setRequestProperty("X-Rim-Push-Type", "browser-message");                 
        conn.setRequestProperty("X-Rim-Push-Dest-Port", "7874");            
        //Write the data
        OutputStream out = conn.getOutputStream();
        out.write(data.getBytes());
        out.close();

        System.out.println(conn.getHeaderField("X-Rim-Push-ID"));

X-Rim-Push-Titleを取得しようとすると、最後の行はnullを返します。正しく取得されたX-Rim-Push-ID のみがNULLです。

私を助けてください

4

3 に答える 3

14

あなたが本当にやりたいことはよくわかりません。しかし、サーバーに何が投稿されているかを確認するには、それを自分のサーバーに投稿し、そこで受信したデータを読み取る必要があります。

すべての REQUEST ヘッダーを表示する場合は、次のようにします。

for (String header : conn.getRequestProperties().keySet()) {
   if (header != null) {
     for (String value : conn.getRequestProperties().get(header)) {
        System.out.println(header + ":" + value);
      }
   }
}

または、接続後に RESPONSE ヘッダーを出力できます。

for (String header : conn.getHeaderFields().keySet()) {
   if (header != null) {
     for (String value : conn.getHeaderFields().get(header)) {
        System.out.println(header + ":" + value);
      }
   }
}
于 2012-07-18T15:35:17.660 に答える
1

Apache HttpClient の使用をお勧めします

final HttpClient client = new HttpClient();
final PostMethod method = new PostMethod(uri);
method.addRequestHeader("X-Rim-Push-Title", "-message");
client.executeMethod(method);
String responseBody = method.getResponseBodyAsString();
Header[] headers = method.getResponseHeaders();

HttpClient は、HttpURLConnection よりもはるかに強力な HTTP 処理方法です。

于 2012-07-18T15:32:19.490 に答える
0

送信されたヘッダーとリクエストの入力ストリームを確認すると、200 ok ステータスが表示されますが、デバイスには何も送信されません

from server: 200 | OK


=======REQUEST===============
request header:X-Rim-Push-ID:pushID:1342694818991
request header:Host:win-uhgr7vs88uz.assabb.com:8080
request header:Content-Length:19
request header:X-Rim-Push-Title:-message
request header:User-Agent:Java/1.6.0_18
request header:POST /push?DESTINATION=bestest%40assa-associates.com&PORT=7874&REQUESTURI=/ HTTP/1.1:null
request header:Content-Type:text/html
request header:Accept:text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
request header:Connection:keep-alive
request header:X-Rim-Push-Dest-Port:7874
request header:X-Rim-Push-Type:browser-message
======Response===============
response header:Date:Thu, 19 Jul 2012 10:47:10 GMT
response header:Content-Length:0
response header:X-RIM-Push-ID:pushID:1342694818991
response header:Via:MDS_5.0.3.26
response header:x-rim-multidest-push-supported:true
response header:Server:Apache-Coyote/1.1
response header:x-rim-push-persisted:fals
于 2012-07-19T09:50:11.063 に答える