2012-07-18 39 views
6

Tôi đang cố gắng để thúc đẩy một số dữ liệu đến một URL (MDS_CS) cho một BESHttpURLConnection conn.getRequestProperty trả về null

khi tôi thiết lập một số tiêu đề yêu cầu trong mã của tôi, và gửi yêu cầu, tiêu đề yêu cầu đệ trình là được đặt thành null.

đây là mã của tôi:

 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")); 

cuối cùng dòng trở lại null khi tôi cố gắng để lấy lại X-Rim-Push-Title nó là NULL chỉ X-Rim-Push- ID được lấy ra một cách chính xác,

hãy giúp tôi

+1

Bạn đang đặt yêu cầu chống đỡ erties, nhưng nhận được một lĩnh vực tiêu đề. Đó là mục đích? Cá nhân tôi sẽ mong đợi 'conn.getRequestProperty (" X-Rim-Push-ID ")' để làm việc. – Thor84no

+3

để làm rõ những gì @ Thor84no đang nói, 'getHeaderField()' là để nhận tiêu đề _response_, không phải là tiêu đề yêu cầu mà bạn đã đặt trước đó. – jtahlborn

+0

đúng, làm cách nào tôi có thể nhận được toàn bộ bài đăng http có tiêu đề và dữ liệu tôi đã gửi? phản hồi từ máy chủ là 200, nhưng vẫn không nhận được dữ liệu của tôi được chuyển tới blackberry – dzgeek

Trả lời

12

Không hoàn toàn chắc chắn những gì bạn thực sự muốn làm. Nhưng để xem những gì được đăng lên máy chủ, bạn sẽ phải tự đăng nó lên và đọc dữ liệu bạn nhận được ở đó.

Nếu bạn muốn xem tất cả các tiêu đề REQUEST bạn có thể:

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

Hoặc sau khi kết nối, bạn có thể in ra các tiêu đề ỨNG PHÓ:

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

Tôi đang sử dụng một phương pháp chính đơn giản để thực hiện yêu cầu của tôi, tôi không thể gỡ lỗi yêu cầu đã gửi! cách "tự đăng bài và đọc" tôi có thể làm điều đó không? – dzgeek

+0

Để đăng nó lên máy chủ của riêng bạn, dễ nhất sẽ là một servlet trong một thùng chứa servlet như tomcat. Nhưng tôi không hiểu tại sao bạn thực sự cần điều này. Khi bạn viết tất cả dữ liệu trong yêu cầu của bạn, bạn nên biết những gì bạn đang gửi bài. Bạn đã kiểm tra xem dữ liệu 'dữ liệu của bạn trông như thế nào, bạn đã mã hóa chính xác chưa? – morja

+0

xử lý từ phương thức đăng bài trên một servlet? Tôi có đúng không? dữ liệu được mã hóa! máy chủ trả lại mã 200 trở lại – dzgeek

1

tôi sẽ đề nghị sử dụng 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 là một cách mạnh mẽ hơn để xử lý HTTP hơn HttpURLConnection.

0

Khi tôi kiểm tra tiêu đề của tôi gửi và inputstream theo yêu cầu, tôi nhận được trạng thái 200 ok, nhưng không có gì được gửi đến thiết bị

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