1

Android アプリからこのメッセージを送信しようとしています:

https://myserver/index.php?x0=param1&y0=param2&z0=param3

ここで、param1、param2、および param3 は、ユーザーが EditText フィールドに入力する値です...

今のところ私のアプリはこの値を読み取りますが、httppost で送信しようとすると機能しません (エラー メッセージは表示されませんが、値が想定どおりに変更されていません...)

誰かが私が間違っていることを説明できますか?

これは、パラメーターの値を読み取り、sendPostRequest メソッドを呼び出す MainActivity の一部です。

 private OnClickListener InitialPosListener = new OnClickListener() {
        @Override
        public void onClick(View v) {

        String x00 = InitialPosX.getText().toString(); String y00 = InitialPosY.getText().toString(); String z00 = InitialPosZ.getText().toString();
        float x0 = Float.valueOf(x00); float y0 = Float.valueOf(y00); float z0 = Float.valueOf(z00);


        sendPostRequest(x00, y00, z00);


      }; 

これは、後で MainActivity で定義された http ポスト メソッドです。

        private void sendPostRequest(String x00, String y00, String z00) {

            class SendPostReqAsyncTask extends AsyncTask<String, Void, String>{

                @Override
                protected String doInBackground(String... params) {

                    String x00 = params[0];
                    String y00 = params[1];
                    String z00 = params[2];

                    HttpClient httpClient = new DefaultHttpClient();
                    HttpPost httpPost = new HttpPost("https://myserver/index.php");
                    BasicNameValuePair XBasicNameValuePair = new BasicNameValuePair("x0", x00);
                    BasicNameValuePair YBasicNameValuePAir = new BasicNameValuePair("y0", y00);
                    BasicNameValuePair ZBasicNameValuePAir = new BasicNameValuePair("z0", z00);

                    List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
                    nameValuePairList.add(XBasicNameValuePair);
                    nameValuePairList.add(YBasicNameValuePAir);
                    nameValuePairList.add(ZBasicNameValuePAir);


                    try {
                        UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);
                        httpPost.setEntity(urlEncodedFormEntity);

                        try {
                            HttpResponse httpResponse = httpClient.execute(httpPost);
                            InputStream inputStream = httpResponse.getEntity().getContent();
                            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                            StringBuilder stringBuilder = new StringBuilder();
                            String bufferedStrChunk = null;

                            while((bufferedStrChunk = bufferedReader.readLine()) != null){
                                stringBuilder.append(bufferedStrChunk);
                            }

                            return stringBuilder.toString();

                        } catch (ClientProtocolException cpe) {
                            System.out.println("First Exception caz of HttpResponese :" + cpe);
                            cpe.printStackTrace();
                        } catch (IOException ioe) {
                            System.out.println("Second Exception caz of HttpResponse :" + ioe);
                            ioe.printStackTrace();
                        }

                    } catch (UnsupportedEncodingException uee) {
                        System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee);
                        uee.printStackTrace();
                    }

                    return null;
                }   


            } //END CLASS SendPostReqAsyncTask  

            SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
            sendPostReqAsyncTask.execute(x00, y00, z00); 

        } //END VOID sendPostRequest
4

1 に答える 1

1

このフォームhttps://myserver/index.php?x0=param1&y0=param2&z0=param3は、リクエストを行った場合に得られるフォームではありませんPOST。このフォームで送信するかGET、プロジェクトのサーバー側を詳しく調べてください。POSTGET

(user2748484のコメントに情報を追加するために編集されました)

変数に割り当てる値は、定義上静的ではありません (したがって「変数」)。-Requestでキーと値のペアを送信する場合GET、最も基本的な方法は、?たとえばStringBuilderJava で a を使用して、Query-String ( の後の部分) を自分で作成することです。

次に、構築されたクエリ文字列を URI に追加するだけです。

String url = "https://myserver/index.php";
String queryString = "x0=param1&y0=param2&z0=param3"; // construct this with StringBuilder
String result = url + "?" + queryString;

GETその後、結果の文字列を使用して-Requestを実行できます。注: query-String を作成する場合は、キーと値を URL エンコードすることを忘れないでください ( &.

HTH。

于 2013-09-27T11:31:17.437 に答える