В заголовке HTTP нет cookie - PullRequest
1 голос
/ 30 ноября 2010

Я сделал HttpConnection в BlackBerry. Он вернул мне успешный логин, но я не могу получить 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 )

1 Ответ

0 голосов
/ 30 ноября 2010

Перепроверьте сервис API. Возможно, вы ожидаете чего-то, что не существует (служба не использует cookie) или, возможно, вы не использовали API должным образом (служба поддерживает cookie, но запрос службы не запрашивал ее).

Или, но API службы должен сказать ему, что cookie генерируется локально с помощью javascript. В этом случае вы не найдете запись заголовка и вам придется выполнить код сценария, чтобы установить cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...