Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending cookie with http post android

Hello guys I'm trying to send a cookie with http post in android

here's my code

webUrl = "XXXXXX";
        webView = (WebView) findViewById(R.id.webview);
        try
        {
            CookieStore cookieStore = new BasicCookieStore();
            Cookie cookie = new BasicClientCookie("session_id", "1234");
            cookieStore.addCookie(cookie);

            DefaultHttpClient httpclient = new DefaultHttpClient();

            BasicHttpContext mHttpContext = new BasicHttpContext();

            mHttpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

             HttpGet httpget = new HttpGet("XXXXX");

             HttpResponse response = httpclient.execute(httpget);
             HttpEntity entity = response.getEntity();

             Log.i("TAG", "Login form get: " + response.getStatusLine());
             if (entity != null) {
                 entity.consumeContent();
             }
             Log.i("TAG", "Initial set of cookies:");
             List<Cookie> cookies = httpclient.getCookieStore().getCookies();
             if (cookies.isEmpty()) {
                 Log.i("TAG", "None");
             } else {
                 for (int i = 0; i < cookies.size(); i++) {
                     Log.i("TAG", "- " + cookies.get(i).toString());
                 }
             }

            HttpPost httpost = new HttpPost("XXXXX");

            List <NameValuePair> nvps = new ArrayList <NameValuePair>();
            nvps.add(new BasicNameValuePair("session_id", "1234"));
            nvps.add(new BasicNameValuePair("selected_cid", "1234"));
            nvps.add(new BasicNameValuePair("selected_kaisai_id", "1234"));
            nvps.add(new BasicNameValuePair("iid", "1234"));
            nvps.add(new BasicNameValuePair("tid", "1234"));

            httpost.setEntity(new UrlEncodedFormEntity(nvps));

            response = httpclient.execute(httpost);
            entity = response.getEntity();

            Log.i("TAG", "Login form get: " + response.getStatusLine());
            if (entity != null) {
                entity.consumeContent();
            }

            Log.i("TAG", "Post logon cookies:");
            cookies = httpclient.getCookieStore().getCookies();
            if (cookies.isEmpty()) {
                System.out.println("None");
            } else {
                for (int i = 0; i < cookies.size(); i++) {
                    Log.i("TAG", "- " + cookies.get(i).toString());
                }
            }
            httpclient.getConnectionManager().shutdown();        
        }
        catch(Exception e)
        {
            Log.i("TAG", e.getMessage());
        }
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        String postData = "session_id=1234";
        webView.postUrl(webUrl, EncodingUtils.getBytes(postData, "BASE64"));

I can post the data from postData but not the cookie the cookie isn't showed in the webview here's the PHP side

public function cookietestAction()
    {
        echo "mixi for netrecorder tester<br/>\n";

        echo "<br/>Cookies...<br/>\n\n";
        $request = new Zend_Controller_Request_Http();
        $sessionid = $request->getCookie('session_id');
        echo "<br/>\nsessionid = ".$sessionid."<br/>\n";

        $selected_cid = $request->getCookie('selected_cid');
        echo "\nselected_cid = ".$selected_cid."<br/>\n";

        $selected_kaisai_id = $request->getCookie('selected_kaisai_id');
        echo "\nselected_kaisai_id = ".$selected_kaisai_id."<br/>\n";

        $iid = $request->getCookie('iid');
        echo "\niid = ".$iid."<br/>\n";

        $tid = $request->getCookie('tid');
        echo "\ntid = ".$tid."<br/>\n";

        if($this->getRequest()->isPost())
        {
            echo "<br/>POST data only...<br/>\n\n";
            $post = $this->getRequest()->getPost('session_id');
            echo "<br/>\nsession_id=".$post."<br/>\n";
            $post = $this->getRequest()->getPost('selected_cid');
            echo "selected_cid=".$post."<br/>\n";
            $post = $this->getRequest()->getPost('selected_kaisai_id');
            echo "selected_kaisai_id=".$post."<br/>\n";
            $post = $this->getRequest()->getPost('tid');
            echo "tid=".$post."<br/>\n";
            $post = $this->getRequest()->getPost('iid');
            echo "iid=".$post."<br/>\n";
        }
}

can anyone tell me what's wrong? thank you

like image 391
Niko Adrianus Yuwono Avatar asked Sep 05 '12 11:09

Niko Adrianus Yuwono


People also ask

Are cookies sent in HTTP headers?

Cookies are passed as HTTP headers, both in the request (client -> server), and in the response (server -> client).

Do Webviews share cookies?

Cookies can be stored within a webview similar to the way they are stored in a browser setting. However, any given webview (and, therefore the cookies stored in it) is unique per application. Mobile apps therefore cannot share cookie information with each other or with the device's mobile web browser.


1 Answers

to add cokie use it like this: it should be added in header

        post.addHeader("Cookie", " PHPSESSID="+PHPSESSID+"; gc_userid="+gc_user+"; gc_session="+gc);

for you it should be like:

     httpost.addHeader("Cookie","session_id = 1234;"...)
like image 64
Athul Harikumar Avatar answered Sep 23 '22 17:09

Athul Harikumar