とりあえずAndroidエミュレータをローカルコンピュータに接続しています。PHPに接続し、実行するIPアドレスを送信します。次に、JSONの結果をエコーします。結果を印刷したいのですが、Androidの画面を変更するのに問題があります。
これが私の活動です:
public class MainActivity extends Activity implements OnClickListener {
EditText ipAddress;
Button bSearch;
String IP;
HttpClient httpclient;
HttpPost httppost;
ArrayList<NameValuePair> nameValuePairs;
HttpResponse response;
HttpEntity entity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();
}
private void initialize(){
ipAddress = (EditText) findViewById(R.id.IPaddress);
bSearch = (Button) findViewById(R.id.searchBtn);
bSearch.setOnClickListener((OnClickListener) this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
httpclient = new DefaultHttpClient();
httppost = new HttpPost("http://127.0.0.1/myfiles/WorkingVersionVJSON.php");
IP = ipAddress.getText().toString();
nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("ipaddress", IP));
try{
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpclient.execute(httppost);
if(response.getStatusLine().getStatusCode()==200){
entity = response.getEntity();
if(entity != null){
InputStream instream = entity.getContent();
JSONObject jsonResponse = new JSONObject(convertStreamToString(instream));
String rIP = jsonResponse.getString("ipaddress");
}
}
}catch(Exception e){
e.printStackTrace();
}
}
private static String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
そしてPHP
<?php
require("IPQFunctionworkingversionV7.php");
$ipaddress = $_POST["ipaddress"];
$results = array();
$results = getScore($ipaddress);
echo json_encode($results);
?>
PHPは、ブラウザーで実行し、htmlを使用して投稿すると機能します。私はその線が
nameValuePairs.add(new BasicNameValuePair("ipaddress", IP));
IPはAndroidのテキストボックスに入力されたものである必要があり、PHPのPOSTと一致するため、同じ方法でphpに投稿します。
アクティビティはコンパイルされてエミュレータ上にあるので、接続は成功したと思います。画面に表示できるようにJSON応答を解析する必要があります。それができたら、レイアウトに取り組みます。