2012-04-07 7 views
0

コードは少し長いですが、それらのほとんどは非常に単純なIMOです。今私はウェブサイトにデータを投稿し、返されたHTMLコードをTextView.Firstに表示するアンドロイドアプリを書いています。私は単純なJava POSTメソッドを書いて、それは私のコンピュータで完璧に動作します(Linuxの場合、ユーザ名とパスワードをhttp://forum.xda-developers.com/login.phpにユーザー名とパスワードが間違っていることを私に求められているが)、成功したHTMLを返しました:JavaのPOSTはアンドロイドのPOSTと異なりますか?

package com.app.main; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.URL; 
import java.net.URLConnection; 

public class Connection 
{ 
    String returnText = "";       
    String returnLine; 

      //data which is about to be posted 
    public String data = "vb_login_username=test&vb_login_password&securitytoken=guest&do=login"; 

    public String returnHTML() 
    { 
    try { 
      URL url = new URL("http://forum.xda-developers.com/login.php"); 
      URLConnection conn = url.openConnection(); 
      conn.setDoOutput(true); 
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
      wr.write(data); 
      wr.flush(); 
      BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

      while((returnLine = rd.readLine()) != null) { 
       returnText += returnLine; 
      } 

      wr.close(); 
      rd.close(); 

      return returnText; 

    } catch (Exception e) { 
     return "ERROR: "+e.getMessage(); 
     } 
    } 
} 

私が使用してコードをテストした:

Connection net_start = new Connection(); 
System.out.println(net_start.returnHTML()); 

完璧。 HTMLが正常に返された後、アンドロイドアプリを作成します。これは非常にシンプルで、ボタンとTextViewしかありません。ボタンを押すと、正常に終了した場合、TextViewは返されたHTMLを表示します。ここでは、メインActivity.java

package com.app.main; 

import android.app.Activity; 
import android.os.Bundle; 
import android.text.method.ScrollingMovementMethod; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class AndroidTestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final TextView displayResult = (TextView)findViewById(R.id.displayResult); 
    Button login = (Button)findViewById(R.id.login); 

    //set dispalyResult scrollable 
    displayResult.setMovementMethod(new ScrollingMovementMethod()); 

    login.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      Connection net_start = new Connection(); 
      displayResult.setText(net_start.returnHTML());  

     } 

    }); 

    } 

} 

非常に簡単なコードのソースコードは、上記のことから唯一の違いは、私はTextViewの代わりに、コマンドラインに返されたHTMLの表示を設定することです。しかし、私は失敗しました。デバッグによると、Connection.javaのその行に例外がスローされていることがわかりました:OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());、キャッチされたeはこう言っています:java.net.UnknownHostException: forum.xda-developers.comしかし、私の携帯電話でxda-developersのWebサイトにログインすることができます(adb私の電話)、それで問題は何ですか?アンドロイドは使用できませんURLConnection?任意のヘルプをいただきありがとうございます:)

答えて

2

利用可能ですか?あなたのコードは、私の場合には正常に動作します

あなたアンドロイドアプリケーションのマニフェストファイル内

<uses-permission 
     android:name="android.permission.INTERNET" /> 

..:

returnTextの結果は次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en"><head><meta name="robots" content="noindex,follow" /><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><meta http-equiv="X-UA-Compatible" content="IE=9" ><meta name="keywords" content="XDA,MDA,Vario,HTC,Qtek,wallaby,wizard,tytn,hermes,alpine,prophet,i-mate,jam,dopod,tornado,typhoon,programming,coding,modding,wiki,forum,news,xdatools,xdaunlock,romkitchen,rom,development,lobster,unlock,imei" /><meta name="description" content="Android and Windows Mobile Developers - The Largest Community for Smartphone Hacks and Development of Apps" /><style type="text/css" id="vbulletin_css">/*** vBulletin 3.8.7 CSS* Style: 'XDA 2010'; Style ID: 16*/@import url("http://media.xda-developers.com/clientscript/vbulletin_css/style-e9bec9ef-00016.css"); 
+0

THX万人!その '使用許可'!その行に ''という行を追加すると、Androidの携帯電話でも完璧に動作します! – Searene

関連する問題