AndroidでPOSTする方法を探しても面倒くさいOkHttpだとか、そもそも通常のHTTPによるPOSTしか出てこないなど色々初心者には厳しい物ばかりでしたので、簡単なDefaultHttpClientを使ってJSONによるPOSTを行う方法をここに掲載します。
出来ること
・JSON形式でデータをPOST
・POSTの結果JSON形式で返却された値のパース
・その画面描画等
出来ること
・JSON形式でデータをPOST
・POSTの結果JSON形式で返却された値のパース
・その画面描画等
POSTの例です。DefaultHttpClientあたりはもう非推奨APIなわけですが、動作します。
マニフェストにインターネット接続パーミッションを追記することとHTTPのやつのjarファイルをlibに突っ込むのをお忘れなく。
以下のソースコードでPOSTするJSONの形式はこんな感じ。
{"description":"honoka","level":1,"test":[2,5]}
以下ソースコード。
マニフェストにインターネット接続パーミッションを追記することとHTTPのやつのjarファイルをlibに突っ込むのをお忘れなく。
以下のソースコードでPOSTするJSONの形式はこんな感じ。
{"description":"honoka","level":1,"test":[2,5]}
以下ソースコード。
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
try {
json = new JSONObject(result);
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class MainActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Loader().execute();
}
class Loader extends AsyncTask<Void, Void, JSONObject>{
@Override protected void onPreExecute() {
super.onPreExecute();
class Loader extends AsyncTask<Void, Void, JSONObject>{
@Override protected void onPreExecute() {
super.onPreExecute();
}
@Override protected JSONObject doInBackground(Void... params) {
JSONObject jobj = new JSONObject(); //POST用JSON生成
@Override protected JSONObject doInBackground(Void... params) {
JSONObject jobj = new JSONObject(); //POST用JSON生成
try {
jobj.put("description", "honoka");
jobj.put("description", "honoka");
jobj.put("level", 1);
JSONArray tmp = new JSONArray();
tmp.put(2);
tmp.put(5);
jobj.put("test",tmp);
JSONArray tmp = new JSONArray();
tmp.put(2);
tmp.put(5);
jobj.put("test",tmp);
} catch (JSONException e) {
e.printStackTrace();
e.printStackTrace();
}
return postJsonObject("http://", jobj);//URL入力
}
@Override protected void onPostExecute(JSONObject result) { //取得したJSONデータをここで利用
super.onPostExecute(result);
}
}
public JSONObject postJsonObject(String url, JSONObject loginJobj){
InputStream inputStream = null;
return postJsonObject("http://", jobj);//URL入力
}
@Override protected void onPostExecute(JSONObject result) { //取得したJSONデータをここで利用
super.onPostExecute(result);
}
}
public JSONObject postJsonObject(String url, JSONObject loginJobj){
InputStream inputStream = null;
String result = "";
try {
HttpClient httpclient = new DefaultHttpClient();
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
System.out.println(url);
String json = "";
json = loginJobj.toString();
StringEntity se = new StringEntity(json);
httpPost.setEntity(se);
// JSON形式でPOSTするためのHTTPヘッダ設定 httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
HttpResponse httpResponse = httpclient.execute(httpPost);
inputStream = httpResponse.getEntity().getContent();
if(inputStream != null)
result = convertInputStreamToString(inputStream);
result = convertInputStreamToString(inputStream);
else
result = "Did not work!";
result = "Did not work!";
} catch (Exception e) {
Log.d("InputStream", e.getLocalizedMessage());
Log.d("InputStream", e.getLocalizedMessage());
}
JSONObject json = null;
JSONObject json = null;
try {
json = new JSONObject(result);
} catch (JSONException e) {
e.printStackTrace();
e.printStackTrace();
}
Log.d("json",String.valueOf(json));
return json;
}
private String convertInputStreamToString(InputStream inputStream) throws IOException{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
private String convertInputStreamToString(InputStream inputStream) throws IOException{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
String result = "";
while((line = bufferedReader.readLine()) != null)
result += line;
result += line;
inputStream.close();
return result;
}
}
}
Comment
コメントする