

初めての質問なので、言葉足らずになってしまったり勉強不足な部分がありましたら大変申し訳ありません。

現在、Androidアプリの制作をしていて詰まった点があるので質問します。  
アプリ内のボタンを押下するとphpファイルが起動しMySQLへデータの格納ができるという機能をつけようとしましたが、エラーコード400が返ってきてしまい上手くいきませんでした。  
開発はAndroidStudioで行っており、仮想エミュレータ(Pixel 2)で実行しています。  
xamppからApacheとMySQLを起動しhttp通信を行って自分のPC内にあるxamppフォルダ内のhtdocsフォルダの中にあるphpファイルを起動したいです。phpファイルにはアプリからPOSTメソッドでidとnameをjson形式で受けとって、それをMySQL内のテーブルに登録するような処理が書かれています。  
phpファイルの処理が正常に動作することは確認できています。

エラーコード400が返ってくるのでphpファイル(API)を指定しているURLが間違っているのではと見当をつけ、`String apiUrl =
"http://10.0.2.2/send.php";`  
のIPアドレス部分をlocalhostにしたり、自分のPCのIPアドレスにしたりしてみたのですが結果は変わりませんでした。

有識者の方々にエラーの原因や参考になるサイトを教えていただけたら幸いです。

以下にボタンが押下されたときに呼び出されるプログラムを記載します。  
Java

[code]

        public void button() {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    sendData();
                }
            }).start();
        }
    
[/code]

Java

[code]

        private String sendData() {
    
            String apiUrl = "http://10.0.2.2/send.php";
    
            HttpURLConnection con = null;
            StringBuffer result = new StringBuffer();
    
            try {
                String Json = "{\"id\":\"1\",\"name\":\"test_user\"}";
                JSONObject jsonObj = new JSONObject(Json);
    
                URL url = new URL(apiUrl);
                con = (HttpURLConnection) url.openConnection();
                con.setRequestMethod("POST");
                con.setDoOutput(true);
                con.setRequestProperty("Content-Type", "application/json; charset=utf-8");
    
                OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
                out.write(Json);
                out.flush();
                con.connect();
    
    
                final int status = con.getResponseCode();
                if (status == HttpURLConnection.HTTP_OK) {
    
                    final InputStream in = con.getInputStream();
                    String encoding = con.getContentEncoding();
                    if (null == encoding) {
                        encoding = "UTF-8";
                    }
                    final InputStreamReader inReader = new InputStreamReader(in, encoding);
                    final BufferedReader bufReader = new BufferedReader(inReader);
                    String line = null;
                    while ((line = bufReader.readLine()) != null) {
                        result.append(line);
                    }
                    bufReader.close();
                    inReader.close();
                    in.close();
                }else {
                    System.out.println(status);
                }
            } catch (Exception e1) {
                e1.printStackTrace();
            } finally {
                if (con != null) {
                    con.disconnect();
                }
            }
            return result.toString();
        }
    
[/code]


CC BY-SA 4.0
2023-02-26T11:34:18.147
94013
2023-02-26T11:34:18.147
57284
question
php java mysql android-studio http
AndroidStudio上の仮想エミュレータからMySQLへの接続