2015-07-02 115 views
0

我想用java登錄到一個網站,然後最終檢索cookie以訪問網站上的信息。看來我的職務要求是工作,但我收到的500的響應代碼,我想知道,這是因爲我格式化後的數據不正確發送郵寄請求到網站

當使用它說,後的格式爲下面的網站

{userName: "dfh", password: "suyj"}  

在我的代碼,我就在想,這可能是問題用這個

String urlParameters = "userName:dfh,Password:suyj"; 

    con.setDoOutput(true); 
    DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
    wr.writeBytes(urlParameters); 
    wr.flush(); 
    wr.close(); 

我是不是,如果是的話我怎麼能糾正我的帖子的數據格式?

下面是我的全部代碼

public class post { 
public static void main(String[] args) throws IOException { 
final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0"; 


    String url = "website"; 
    URL obj = new URL(url); 
    HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(); 

    //add reuqest header 
    con.setRequestMethod("POST"); 
    con.setRequestProperty("User-Agent", USER_AGENT); 
    con.setRequestProperty("Accept", "application/json, text/javascript, */*; q=0.01"); 
    con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); 
    con.setRequestProperty("Accept-Encoding", "gzip, deflate"); 
    con.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); 
    con.setRequestProperty("X-Requested-With", "XMLHttpRequest"); 
    con.setRequestProperty("Referer", "https://extbasicph05.podc.sl.edst.ibm.com/FFAMobileRelay/"); 
    con.setRequestProperty("Content-Length", "64"); 
    con.setRequestProperty("Connection", "keep-alive"); 
    con.setRequestProperty("Referer", "https://extbasicph05.podc.sl.edst.ibm.com/FFAMobileRelay/"); 
    con.setRequestProperty("Cookies", "UnicaNIODID=KGew34gcvZ5-Y2NoBQr; mmid=-1658088866%7CKAAAAAr15Tc8FgsAAA%3D%3D; mmcore.pd=1484641984%7CejEyAAoBQvXlNzwWCxPPXGheAVibftSXgNJIDwAAADoOVvoDstFIAAAAAP//////////AAZEaXJlY3QBFgwIAAYABQAAAAAAAP+MAACAigAA/4wAAAIAxDEAAABFBVUW6QsA/////wHpCxoM//83AAAAAAAAAAOSfwAAusgAAJN/AAAgyAAAlH8AACHIAAABIYAAAAIAAADVNgAAAPcCB+70CwD/////AfQLHQz//60CAAEAAAAAAX+KAAAp2gAAAoCKAABAWBAAgYoAALMAAAAAAAABRQ%3D%3D; mmcore.srv=ldnvwcgus03; IBM_W3SSO_ACCESS=w3-03.sso.ibm.com; CoreID6=32675392371714128784599&ci=51040000|IBMTEST_51040000|IBMTESTW3_50200000|IBMTESTWWW; CoreM_State=75~-1~-1~-1~-1~3~3~5~3~3~7~7~|~~|~~|~~|~||||||~|~~|~~|~~|~~|~~|~~|~~|~; CoreM_State_Content=6~|~EE9EDB09923CD77F~|~0; PrefID=222-11978519; CSList=23427744/17540903,0/0,0/0,0/0,0/0; _ga=GA1.2.233924805.1433836377; mmcore.tst=0.169; ibmSurvey=1435758135373; 50200000_clogin=v=1&l=1435758136&e=1435760174616"); 

    String urlParameters = "userName:dfh,Password:suyj"; 

    // Send post request 
    con.setDoOutput(true); 
    DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
    wr.writeBytes(urlParameters); 
    wr.flush(); 
    wr.close(); 

    int responseCode = con.getResponseCode(); 
    System.out.println("\nSending 'POST' request to URL : " + url); 
    System.out.println("Post parameters : " + urlParameters); 
    System.out.println("Response Code : " + responseCode); 
    System.out.println(con.getErrorStream()); 

    BufferedReader in = new BufferedReader(
      new InputStreamReader(con.getInputStream())); 
    String inputLine; 
    StringBuffer response = new StringBuffer(); 

    while ((inputLine = in.readLine()) != null) { 
     response.append(inputLine); 
    } 
    in.close(); 

    //print result 
    System.out.println(response.toString()); 

} 

} 
+0

通常,表單參數被url編碼到POST正文中,如「name1 = value1&name2 = value2」。您可以使用Chrome開發人員工具/ firebug/etc下的網絡標籤查看發送的內容。 – Michelle

+0

我用那個水龍頭找到{userName:「dfh」,密碼:「suyj」}我應該在看別的東西 – user1261404

回答

2

你已經找到了你的問題。剛修好它... 相反的String urlParameters = "userName:dfh,Password:suyj";,使用

String urlParameters = "{userName:\"dfh\",Password:\"suyj\"}"; 

雖然我相信你的服務器預計JSON格式之後的參數。在這種情況下,您應該使用

String urlParameters = "{\"userName\":\"dfh\",\"Password\":\"suyj\"}"; 

或者使用JSON解析器創建參數。

+0

非常感謝,似乎已經工作 – user1261404

+0

@ user1261404,可能是密碼中的大寫'P' ..改爲「密碼」,而不是......只是一個瘋狂的猜測,儘管...... – Codebender