コードは少し長いですが、それらのほとんどは非常に単純な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
?任意のヘルプをいただきありがとうございます:)
THX万人!その '使用許可'!その行に ' 'という行を追加すると、Androidの携帯電話でも完璧に動作します! –
Searene