java - HTTP header 中没有 cookie

标签 java blackberry

我已经在 BlackBerry 中创建了 HttpConnection。它返回给我一个成功的登录信息,但我无法检索 cookie,因为 header 中没有 cookie。有谁知道我怎样才能得到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 )

最佳答案

仔细检查服务 API。也许您期待的东西不存在(服务不使用 cookie),或者您没有按预期使用 API(服务支持 cookie,但服务请求没有要求)。

或者,但服务 API 应该告诉它,cookie 是使用 javascript 在本地生成的。在这种情况下,您将找不到 header 条目,并且必须执行脚本代码来设置 cookie。

关于java - HTTP header 中没有 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4312287/

相关文章:

java - 使用移动网络时http连接卡住

android - 如何修复黑莓应用程序提交兼容性?

blackberry - 有没有办法以编程方式从黑莓上最常用的列表中删除应用程序?

Java正则表达式后跟z^3的数字?

Java ClassLoader - 在外部 jar 中转换方法

java - 如何理解Spring中的Bean?

android - 在黑莓中,android 播放器是否支持推送通知或 C2dm?

java - 我应该将 SQL 文件放在我的 Java 项目中的什么位置?

java - 使用对象生成新值时遇到问题

java - 如何在黑莓的类中添加 addGlobalEventListener?