私はデータベースにいくつかのデータを保存するアプリケーションを作っています。 私はPHPで作業しています。クライアント側では、入力を取得してPHPファイルに渡すこのファイルがあります。サーバーからの応答を受信する際にエラーが発生しましたか?
8月26日12時51分:私はデータを提出
public class JSONParser { String charset = "UTF-8"; HttpURLConnection conn; DataOutputStream wr; StringBuilder result; URL urlObj; JSONObject jObj = null; StringBuilder sbParams; String paramsString; public JSONObject makeHttpRequest(String url, String method, HashMap<String, String> params) { sbParams = new StringBuilder(); int i = 0; for (String key : params.keySet()) { try { if (i != 0){ sbParams.append("&"); } sbParams.append(key).append("=") .append(URLEncoder.encode(params.get(key), charset)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } i++; } if (method.equals("POST")) { // request method is POST try { urlObj = new URL(url); conn = (HttpURLConnection) urlObj.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Accept-Charset", charset); conn.setReadTimeout(10000); conn.setConnectTimeout(15000); conn.connect(); paramsString = sbParams.toString(); wr = new DataOutputStream(conn.getOutputStream()); wr.writeBytes(paramsString); wr.flush(); wr.close(); } catch (IOException e) { e.printStackTrace(); } } else if(method.equals("GET")){ // request method is GET if (sbParams.length() != 0) { url += "?" + sbParams.toString(); } try { urlObj = new URL(url); conn = (HttpURLConnection) urlObj.openConnection(); conn.setDoOutput(false); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept-Charset", charset); conn.setConnectTimeout(15000); conn.connect(); } catch (IOException e) { e.printStackTrace(); } } try { //Receive the response from the server InputStream in = new BufferedInputStream(conn.getInputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); result = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { result.append(line); } Log.d("JSON Parser", "result: " + result.toString()); } catch (IOException e) { e.printStackTrace(); } conn.disconnect(); // try parse the string to a JSON object try { System.out.println(jObj); jObj = new JSONObject(result.toString()); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON Object return jObj; }
そして、これは私がすべての時間を取得エラーです:
new AsyncTask<String, String, String>() { JSONParser jsonParser = new JSONParser(); private ProgressBar pBar; private String url_post_pet = "http://192.168.0.13/Android/post_pet.php"; // JSON Node names private static final String TAG_SUCCESS = "success"; /** * Before starting background thread Show Progress Dialog */ @Override protected void onPreExecute() { super.onPreExecute(); //pBar = new ProgressBar(); //pBar.setIndeterminate(false); //pBar.setVisibility(View.VISIBLE); } @Override protected String doInBackground(String... args) { // Building Parameters HashMap<String, String> params = new HashMap<>(); params.put("name", a); params.put("breed", BREED); params.put("type", TYPE); params.put("images", "Whatever"); params.put("description", c); params.put("coords", b); // getting JSON Object // Note that create product url accepts POST method JSONObject json = jsonParser.makeHttpRequest(url_post_pet, "POST", params); // check log cat for response Log.d("Create Response", json.toString()); // check for success tag try { int success = json.getInt(TAG_SUCCESS); if (success == 1) { // successfully created product Intent i = new Intent(getApplicationContext(), MainActivity.class); startActivity(i); // closing this screen finish(); } else { // failed to create product } } catch (JSONException e) { System.out.println("exception" + e); e.printStackTrace(); } System.out.println("nul"); return null; } /** * After completing background task Dismiss the progress dialog **/ protected void onPostExecute(String file_url) { // dismiss the dialog once done //pBar.dismiss(); } }.execute(); } }); }
はまた、私はこのJSONParserを持っています: 08.236 5089-5156/chtecnologies.myapplication D/JSON Parser:結果:08-26 12:51:08.239 5089-5156/chtecnologies.myapplication E/JSONパーサー:データの解析エラーorg.json.JSONException:文字0での入力の終了 08-26 12:51:08.793 5089-5096/chtecnologieすべてのスレッドを中断しました:137.277ms 08-26 12:51:09.267このスレッドに返信します...返信> 075355156/chtecnologies.myapplication E/AndroidRuntime:致命的な例外:AsyncTask#1 プロセス:chtecnologies.myapplication、PID:5089 java.lang.RuntimeException:アンドロイド.os.AsyncTaskでdoLockExceptionを実行中にエラーが発生しました( ) .done(AsyncTask.java:304) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util .concurrent.FutureTask.ru n(FutureTask.java:242) android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) によって引き起こされた:java.lang.NullPointerException:仮想メソッド 'java.lang .String(null)オブジェクトリファレンスの.String(org.json.JSONObject.toString() ')。 、chtecnologies.myapplication.PostPet $ 4 $ 1.doInBackground(PostPet.java:154) at chtecnologies.myapplication.PostPet $ 4 $ 1.doInBackground(PostPet.java :118) android.os.AsyncTask $ 2.call(AsyncTask.java:292) java.util.concurrent.FutureTask.run(FutureTask.java:237) android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java :231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run (Thread.java:818)
データは正常にデータベースに格納されますが、JSONParserに問題があるようですが、PHPファイルの結果を取得できません。
JSONParserファイルや他の場所に問題がないか教えてください。これは私のアプリケーションでサーバーを実装する初めてです、私はあなたが私を助けることを願っています!ありがとう