2011-08-22 23 views
0

私はこのページへのPOST要求をhttp://www.halebop.se/butik/byt_behall_nummer/にしようとしていましたが、numberToPortを送信しようとしました。しかし、私はクッキーの束を取得し、302一時的に戻って移動します。AndroidでのHTTP POSTリクエスト

私がしたいのは、数字のPOSTリクエストを送信して、最後のページを戻すことです。 iOSでは、リダイレクトとCookieを処理するASIHTTPRequestを使用してこれを行います。

iOSのコード:

NSString *halebopURLString = @"http://www.halebop.se/kontantkort/byt_behall_nummer/#"; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:halebopURLString]]; 
[request setPostValue:halebopNumber forKey:@"numberToPort"]; 
[request setPostValue:@"continue" forKey:@"action"]; 
[request setPostValue:@"submit" forKey:@"submit"]; 
[request startSynchronous]; 

私はAndroid上でこれをどのように行うのですか?

代わりに、PHPソリューションを使用することもできます。

編集:これを試してみてください。出力も例外もありません。私はインターネットの許可を持っています。期待される結果:POSTを送信し、302とクッキーを取得し、302からURLにクッキーを送信し、HTMLを取得します(FireBugでチェック)。しかし、何も得られません。

try { 
     InputStream myInputStream =null; 
     URL url; 
     url = new URL("http://www.halebop.se/kontantkort/byt_behall_nummer/#"); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setDoOutput(true); 
     conn.setInstanceFollowRedirects(true); 
     conn.setRequestMethod("POST"); 
     OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
     wr.write("numberToPort="+n+"&action=continue&submit=submit"); 
     wr.flush(); 
     myInputStream = conn.getInputStream(); 
     wr.close(); 

     BufferedReader rd = new BufferedReader(new InputStreamReader(myInputStream), 4096); 
     String line; 
     StringBuilder sbResult = new StringBuilder(); 
     while ((line = rd.readLine()) != null) { 
      sbResult.append(line); 
      Log.d(TAG, "Line "+line); 
     } 
     rd.close(); 
     String contentOfMyInputStream = sbResult.toString(); 
     Log.d(TAG, "Output "+contentOfMyInputStream); 
    } catch (Exception e) { 
     Log.d(TAG,e.getMessage()); 
    } 
+6

にそれらを設定する方法について説明し? –

+0

あまりにも面倒だった、私の最初のAndroidアプリ。エンボスの提案がうまくいかない場合は投稿します。 –

答えて

3

を使用すると、POSTパラメータを設定することができる方法です。

  HttpPost httpost = new HttpPost(LOGIN_URL); 
    List <NameValuePair> nvps = new ArrayList <NameValuePair>(); 
    nvps.add(new BasicNameValuePair("test1","test1")); 
    nvps.add(new BasicNameValuePair("test2", "test2")); 

      httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 

    response = getResponse(httpost); 

Hereは、コードについて詳細に説明します。

また、私はあなたの応答からHTTPクッキーを取得し、Androidのコードについてあなたが現在でこれを行うにしようとしているどのような要求here

1

あなたはHttpURLConnectionのを使用している場合は、HttpUrlConnection#setFollowRedirectsはあなたが後にあるかであるかもしれません。リダイレクトを自動的に解決するには、trueに設定します。 setInstanceFollowRedirects(true)を使用する方がセキュリティの観点からは盲目的にリダイレクト(静的なものであるsetFollowRedirectsが引き起こすもの)にぶつかっているので、さらに使いやすくなります。ここで

+0

いいです、私の箱に戻ってすぐにお試しください。 ASIHTTPRequestのようにすべてのクッキーを保持し戻しますか? –

+0

私の箱にはまだ戻っていませんが、私はクッキーに関する文書をチェックしました。それは私が必要とするすべてが自動的に私のためのクッキーを処理するために、これらの2つの行が正しいことですか? ** CookieManager cookieManager =新しいCookieManager(); CookieHandler.setDefault(cookieManager); ** –

+0

運が無ければ試してみました。出力も例外もありません。コードについては、編集済みの記事を参照してください。 –

関連する問題