0

Web サーバーで PHP を実行しているスクリプトに JSON 形式のデータを POST しようとしています。この投稿を見つけました: How to send data to a website using httpPost, app crashes .

彼が書いたコード (最初に別のスレッドに置く) を使用して、$_POST 変数によってアクセスする PHP スクリプトにデータをポストすることができます。ただし、データを JSON 形式で投稿したいと考えています。生データのストリームをサーバーに投稿する必要があると思います。これを実現するためにどのような機能が利用できますか? また、画像をデータのストリームとして PHP スクリプトに投稿する必要があるため、このソリューションはその分野でも役立つと思います。

さらに、彼が使用した方法を使用するのではなく、JSON をサーバーに投稿する利点は何ですか?

Android SDK と組み合わせて Java でクライアント側をプログラミングしています。

どんな助けでも大歓迎です。

4

1 に答える 1

0

json data を投稿するためのサンプル例があります。

これを見てください:

    public class LoginActivity extends Activity {

        private static final String TAG = "LoginActivity";

        private Context mContext;
        private Intent mIntent;
        private ProgressDialog pdLoading;

        private class LoginTask extends AsyncTask<Void, Void, String>
        {

                private ArrayList<NameValuePair> mParams = new ArrayList<NameValuePair>();
                private JSONArray mJArray = new JSONArray();
                private JSONObject mJobject = new JSONObject();
                private String jsonString = new String();

                @Override
                protected void onPreExecute() {
                        super.onPreExecute();
                        pdLoading.show();
                }

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

                        try {
                                mJobject.put("userName", "test");
                                mJobject.put("password", "test");
                                mJArray.put(mJobject);
                                mParams.add(new BasicNameValuePair("message", mJArray.toString()));

                                jsonString = WebAPIRequest.postJsonData("http://putyoururlhere.com/login.php?", mParams);

                        } catch (JSONException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                                return null;
                        }
                        return jsonString;
                }

                @Override
                protected void onPostExecute(String result) {
                        super.onPostExecute(result);
                        pdLoading.dismiss();

                        if(result!=null)
                        {

/*                              try {
                                        mJobject = new JSONObject(jsonString);
                                        if(mJobject.getString("Success").equals("True"))
                                        {
                                                mJArray = mJobject.getJSONArray("user");
                                                JSONObject mUser = mJArray.getJSONObject(0);

                                        }
                                } catch (JSONException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }*/

                                Log.e(TAG, jsonString);

                        }
                }

        }


        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                initialization();

                new LoginTask().execute();
        }

        private void initialization() {
                mContext = this;
                mIntent = new Intent();
                pdLoading = new ProgressDialog(mContext);
                pdLoading.setMessage("loading...");

        }


}

public class WebAPIRequest {


    public static String convertStreamToString(InputStream is)
                    throws IOException {
            if (is != null) {
                    StringBuilder sb = new StringBuilder();
                    String line;
                    try {
                            BufferedReader reader = new BufferedReader(
                                            new InputStreamReader(is, "UTF-8"));
                            while ((line = reader.readLine()) != null) {
                                    sb.append(line).append("\n");
                            }
                    } finally {
                            is.close();
                    }
                    return sb.toString();
            } else {
                    return "";
            }
    }


    public static String postJsonData(String url, List<NameValuePair> params) {
            String response_string = new String();

            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            httppost.addHeader("Content-Type", "application/x-www-form-urlencoded");
            try {
                    httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));


                    String paramString = URLEncodedUtils.format(params, HTTP.UTF_8);
                    String sampleurl = url + "" + paramString;
                    Log.e("Request_Url", "" + sampleurl);

                    // Execute HTTP Post Request
                    HttpResponse response = httpclient.execute(httppost);
                    if (response != null) {
                            InputStream in = response.getEntity().getContent();
                            response_string = WebAPIRequest.convertStreamToString(in);

                    }
            } catch (Exception e) {
                    e.printStackTrace();
            }

            return response_string;
    }

}

編集 :

試す、

print_r(json_decode($_POST['message'], true);  

また

$data = file_get_contents('php://input');
$json = json_decode($data,true);

参考になれば幸いです!!

于 2013-10-28T05:39:51.537 に答える