2010-11-30 20 views
1

私はBlackBerryでHttpConnectionを作成しました。それは私に成功したログインを返してきましたが、ヘッダーにCookieがないので、Cookieを取得できません。私はどのようにクッキーを手に入れることができるか知っていますか?HTTPヘッダーにCookieがありません

これは、コード..です

private String login(String URL) 
{ 

    HttpConnection  httpConn = null; 
    DataInputStream  dis = null; 
    DataOutputStream dos = null; 
    StringBuffer  responseMessage = new StringBuffer(); 
    // the request body 

    //Encode the login information in Base64 format. 

    //String username = userName.getString(); 
    //String password = userPassWord.getString(); 
    // username = loginScreen.getUserId(); 
    //password = loginScreen.getPassword(); 
    try { 
     // an HttpConnection with both read and write access 
     net.rim.blackberry.api.browser.URLEncodedPostData login = new net.rim.blackberry.api.browser.URLEncodedPostData(null, false); 
     login.append("username"); //field name , value 
     login.append("password"); 
     httpConn = (HttpConnection)Connector.open(URL, Connector.READ_WRITE); 

     // set the request method to POST 
     httpConn.setRequestMethod(HttpConnection.POST); 
     httpConn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE, HttpProtocolConstants.CONTENT_TYPE_APPLICATION_X_WWW_FORM_URLENCODED); 
     httpConn.setRequestProperty("Accept", "text/html");  

     // obtain DataOutputStream for sending the request string 
     dos = httpConn.openDataOutputStream(); 
     byte[] request_body = login.getBytes(); 

     // send request string to server 
     for(int i = 0; i < request_body.length; i++) { 
      dos.writeByte(request_body[i]); 
     }//end for(int i = 0; i < request_body.length; i++)   

     for (int i=0; ; i++) { 
      String headerName = httpConn.getHeaderFieldKey(i); 
      String headerValue = httpConn.getHeaderField(i); 
      if (headerName == null && headerValue == null) { 
       // No more headers 
       break; 
      } else 
       responseMessage.append("headerName : " + headerName + ", headerValue : " + headerValue + "\n");     
     } 

     // obtain DataInputStream for receiving server response 
     dis = new DataInputStream(httpConn.openInputStream()); 

     // retrieve the response from server 
     int data;  
     tmpCookie = httpConn.getHeaderField("Set-Cookie"); 

     responseMessage.append("1st Cookie" + tmpCookie); 
     if (tmpCookie != null) { 
     int semicolon = tmpCookie.indexOf(';'); 
      cookie = tmpCookie.substring(0, semicolon); 
      responseMessage.append("Cookie" + cookie); 
      } 

     responseMessage.append("LOGIN RESPONSE :"); 
     while((data = dis.read()) != -1) { 
      responseMessage.append((char)data ); 

     }//end while((ch = dis.read()) != -1) {   

    } 

    catch(Exception e) 
    { 
     e.printStackTrace(); 
     responseMessage.append("ERROR"); 
    } 
    finally { 
     // free up i/o streams and http connection 
     try { 
      if(httpConn != null) httpConn.close(); 
      if(dis != null) dis.close(); 
      if(dos != null) dos.close(); 
     } catch (IOException ioe) { 
      ioe.printStackTrace(); 
     }//end try/catch 
    }//end try/catch/finally 
    return responseMessage.toString(); 
}//end sendHttpPost(String) 
+0

どのようにhttp接続を作成しましたか? –

+0

何かへのHTTP接続?おそらくそのサイトはセッションにクッキーを使用しないでしょうか? –

+0

これはサーバーへのhttpConnectionです。 – JohnDoe4136

答えて

0

ダブルサービスAPIを確認してください。たぶんあなたは存在しないもの(サービスはクッキーを使用しません)を期待しているかもしれませんし、APIを期待通りに使用していないかもしれません(サービスはクッキーをサポートしていますが、

サービスAPIがそれを伝える必要がありますが、クッキーはjavascriptでローカルに生成されます。この場合、ヘッダエントリは見つからないので、スクリプトコードを実行してクッキーを設定する必要があります。

+0

私はクッキーを受け取りました、ヘッダーのエンコーディングを受け入れます。どういう意味ですか? – JohnDoe4136

関連する問題