Android Studio 2.3.1を、使ってAndroid4.4でHTTP通信するアプリを、作っています。
画面には、TextView一つButtonが二つあって投稿と取得ができるようなイメージです。
(入力されたテキストを、投稿したり取得したりできる)
MainActivityからMyHttpTaskへUri.Builderでリクエスト(POST か GET)とURLとパラメータを
同時に渡す場合は、どのように記述するのが良いでしょうか?
そしてAsyncTaskなクラスが、一つでPOSTとGETの両方出来るように作り込むのは、悪い案でしょうか?
中略しているので、動くソースコードではありませんが、下記に記載します。
宜しくお願いします。
ソースMainActivity.java
public class MainActivity extends AppCompatActivity { private String url; private Map<String, String> parameters = new HashMap<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //POST投稿ボタン findViewById(R.id.post_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //投稿処理 Uri.Builder builder = new Uri.Builder(); MyHttpTask task = new MyHttpTask(this); (中略) task.execute(builder); (中略) } }); //取得ボタン findViewById(R.id.read_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //取得処理 (中略) Uri.Builder builder = new Uri.Builder(); MyHttpTask task = new MyHttpTask(this); (中略) task.execute(builder); (中略) } }); } }
ソースMyHttpTask.java
public class MyHttpTask extends AsyncTask<Uri.Builder, Void, String> { private Activity mainActivity; public AsyncHttpRequest(Activity activity) { this.mainActivity = activity; } @Override protected String doInBackground(Uri.Builder... builder) { String buf = ""; (中略) URL url = null; try { url = new URL(str); } catch (MalformedURLException e) { e.printStackTrace(); } HttpURLConnection connection = null; try { connection = (HttpURLConnection)url.openConnection(); } catch (IOException e) { e.printStackTrace(); } (中略) try { connection.connect(); } catch (IOException e) { e.printStackTrace(); } try { InputStream inStream = connection.getInputStream(); BufferedReader input = new BufferedReader(new InputStreamReader(inStream)); String line = ""; while ((line = input.readLine()) != null) { buf = buf + line; } }catch (Exception e){ e.printStackTrace(); } return buf; } @Override protected void onPostExecute(String result) { (中略) } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/28 04:38
2017/04/28 04:42
2017/04/28 05:01