http://square.github.io/okhttp/のコードを使用しています。私が欲しいのは、ポストリクエストによってサーバーからの応答を取得したいということです。コードは次のとおりです。
package com.codingpractise.www.officemanagement;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class MainActivity extends Activity {
TextView output;
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize the TextView for vertical scrolling
output = (TextView) findViewById(R.id.message);
output.setMovementMethod(new ScrollingMovementMethod());
}
public void sendSalesData(View view) {
try{
if(isOnline()){
//Net connection Ok
// requestData("http://localhost:1234/track/process/data");
String json = "{'winCondition':'HIGH_SCORE',"
+ "'name':'Bowling',"
+ "'round':4,"
+ "'lastSaved':1367702411696,"
+ "'dateStarted':1367702378785,"
+ "'players':["
+ "{'name':'" + "Sattar" + "','history':[10,8,6,7,8],'color':-13388315,'total':39},"
+ "{'name':'" + "Santo" + "','history':[6,10,5,10,10],'color':-48060,'total':41}"
+ "]}";
//String response = post("http://localhost:1234/track/process/data", json);
MainActivity thisObj = new MainActivity();
String response = thisObj.post("http://localhost:1234/track/process/data", json);
System.out.println(response);
// String response ="Fuck";
output.setText(response);
}
else{
output.setText("NO Internet connection!");
}
}
catch (Exception e){
output.setText(e.getMessage());
}
}
protected boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
}
ボタンをクリックすると sendSalesData() 関数が実行されます。この関数では、投稿リクエストを処理します。このボタンをクリックすると、応答がoutput
textview オブジェクトに表示されるはずです。しかし、サーバーからの応答がありません。
サーバーの応答は単純な php エコー コードです。
echo 'response from server';
しかし、このボタンをクリックしても何も得られません。私のコードの問題。
私の悪い英語でごめんなさい。私はAndroidアプリの初心者なので、質問が標準的でない場合は申し訳ありません.