开发者

No cookie in HTTP header

开发者 https://www.devze.com 2023-01-27 08:18 出处:网络
I have made a HttpConne开发者_开发技巧ction in BlackBerry. It has return me a successful login but I am unable to retrieve the cookie as there isn\'t one in the header. Does anyone know how I can get

I have made a HttpConne开发者_开发技巧ction in BlackBerry. It has return me a successful login but I am unable to retrieve the cookie as there isn't one in the header. Does anyone know how I can get the cookie?

This is the code..

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 )


Double check the service API. Maybe you're expecting something that doesn't exist (service doesn't use cookie) or maybe you didn't use the API as expected (service supports cookie but service request didn't ask for one).

Or, but the service API should tell it, the cookie is generate locally with javascript. In this case, you won't find a header entry and you'll have to execute the script code to set the cookie.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号