尝试通过网络发送JSON时遇到FileNotFoundException

时间:2017-01-10 23:33:53

标签: java android filenotfoundexception

我的代码通过网络发送JSON直到OutputStream被调用,但是当我尝试实际发送数据时,我得到以下异常。任何人都可以帮我搞清楚吗?

  

java.io.FileNotFoundException http://hmkcode.appspot.com/jsonservlet   在   com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)   在app.test.testapp2.MainActivity $ HttpAsyncTask.doInBackground(MainActivity.java:84)

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

            button = (Button) findViewById(R.id.accept);
            textView = (TextView) findViewById(R.id.textView);
            editName = (EditText) findViewById(R.id.editName);
            editCountry = (EditText) findViewById(R.id.editCountry);
            editTwitter = (EditText) findViewById(R.id.editTwitter);

            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    HttpAsyncTask httpAsyncTask = new HttpAsyncTask(MainActivity.this);
                    httpAsyncTask.execute("http://hmkcode.appspot.com/jsonservlet", editName.getText().toString(), editCountry.getText().toString(), editTwitter.getText().toString());
                }
            });
        }

        private class HttpAsyncTask extends AsyncTask<String, Void, String> {
            private MainActivity mainActivity;
            String result = "";

            HttpAsyncTask(MainActivity mainActivity) {
                this.mainActivity = mainActivity;
            }

            @Override
            protected String doInBackground(String... strings) {
                Person person = new Person();
                person.setName(strings[1]);
                person.setCountry(strings[2]);
                person.setTwitter(strings[3]);

                try {
                    URL url = new URL(strings[0]);
                    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();


                    String json = "";

                    JSONObject jsonObject = new JSONObject();
                    jsonObject.accumulate("name", "!!!");
                    jsonObject.accumulate("country", "@@@");
                    jsonObject.accumulate("twitter", "####");

                    json = jsonObject.toString();

                    httpURLConnection.setRequestMethod("POST");
                    httpURLConnection.setDoOutput(true);
                    httpURLConnection.setDoInput(true);
                    httpURLConnection.setRequestProperty("Accept", "application/json");
                    httpURLConnection.setRequestProperty("content-type", "application/json");
                    InputStream is = httpURLConnection.getInputStream();
                    OutputStream os = httpURLConnection.getOutputStream();
                    os.write(json.getBytes("utf-8"));
                    os.flush();

                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
                    String line = "";
                    while ((line = bufferedReader.readLine()) != null) {
                        result += line;
                    }
                    is.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return result;
            }

            @Override
            protected void onPostExecute(String result) {
                str = result;
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            JSONArray jsonArray = new JSONArray(str);
                            mainActivity.textView.setText(jsonArray.toString());
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        }
    }


W/System.err: java.io.FileNotFoundException: http://hmkcode.appspot.com/jsonservlet
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
W/System.err:     at app.test.testapp2.MainActivity$HttpAsyncTask.doInBackground(MainActivity.java:84)
.....

1 个答案:

答案 0 :(得分:0)

这相当于HTTP状态404 - Not Found。