在 Instagram 标签搜索查询中获取 'filenotfound' 异常

Getting 'filenotfound' exception on an Instagram hashtag search query

我正在尝试 运行 一个在 Instagram 中搜索特定主题标签图片的程序。下面是我的程序代码。当我 运行 运行程序时,它没有显示任何错误,但它从 Instagram 返回 "filenotfoundexception"。我认为它在端点 URL 中,但我无法确切地弄清楚我在哪里犯了错误。怎么做 我想通了?

public class SearchActivity extends Activity {

    public EditText edtSearch;
    private final String INSTA_CONS_ID = "xxxx";
    private final String INSTA_CONS_SEC_KEY = "xxxx";
    public static final String APIURL = "https://api.instagram.com/v1/tags";
    ListView list;
    public int index;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        Button btnInsta =(Button)findViewById(R.id.btnInsta);
        edtSearch =(EditText)findViewById(R.id.edtSearch);
        list = (ListView)findViewById(R.id.list);

        btnInsta.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                new SearchOnInstagram().execute(edtSearch.getText().toString());
            }
        });
    }

    class SearchOnInstagram extends AsyncTask<String, Void, Integer> {
        final List<Instagram> inst = new ArrayList<Instagram>();
        final int SUCCESS = 0;
        final int FAILURE = SUCCESS + 1;
        ProgressDialog dialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            dialog = ProgressDialog.show(SearchActivity.this, "", getString(R.string.searchinginsta));
        }

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

                Query query = new Query(params[0]);
                String urlString = APIURL + "/"+ query +"/media/recent?client_id=" + INSTA_CONS_ID;
                        URL url = new URL(urlString);

                InputStream inputStream = url.openConnection().getInputStream();
                String response = streamToString(inputStream);
                JSONObject jsonObject = (JSONObject) new JSONTokener(response).nextValue();
                JSONArray jsonArray = jsonObject.getJSONArray("data");

                for (int i =0; i<= jsonArray.length(); i++) {
                    JSONObject mainImageJsonObject = jsonArray.getJSONObject(index).getJSONObject("images").getJSONObject("standard_resolution");
                    String imageUrlString = mainImageJsonObject.getString("url");
                    String userName = "@Arnab";

                    Instagram instItem = new Instagram(userName,imageUrlString);
                    inst.add(instItem);
                }
                return SUCCESS;
            }
            catch (Exception e) {
                e.printStackTrace();
            }

            return FAILURE;
        }

        @Override
        protected void onPostExecute(Integer result)
        {
            super.onPostExecute(result);
            dialog.dismiss();
            if (result == SUCCESS) {
                list.setAdapter(new InstagramAdapter(SearchActivity.this, inst));
            }
            else
            {
                Toast.makeText(SearchActivity.this, getString(R.string.error), Toast.LENGTH_LONG).show();
            }
        }

        public static String streamToString(InputStream p_is)
        {
            try
            {
                BufferedReader m_br;
                StringBuffer m_outString = new StringBuffer();
                m_br = new BufferedReader(new InputStreamReader(p_is));
                String m_read = m_br.readLine();
                while(m_read != null)
                {
                    m_outString.append(m_read);
                    m_read =m_br.readLine();
                }
                return m_outString.toString();
            }
            catch (Exception p_ex)
            {
                p_ex.printStackTrace();
                return "";
            }
        }

我收到以下异常

09-09 16:20:10.070  25571-25625/com.example.smarthelp W/System.err?       java.io.FileNotFoundException:  https://api.instagram.com/v1/tags/Query{query='india', lang='null', locale='null', maxId=-1, count=-1, since='null', sinceId=-1, geocode='null', until='null', resultType='null', nextPageQuery='null'}/media/recent?client_id=xxx
09-09 16:20:10.070  25571-25625/com.example.smarthelp W/System.err? at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:197)
09-09 16:20:10.070  25571-25625/com.example.smarthelp W/System.err? at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
09-09 16:20:10.070  25571-25625/com.example.smarthelp W/System.err? at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
09-09 16:20:10.070  25571-25625/com.example.smarthelp W/System.err? at com.example.smarthelp.SearchActivity$SearchOnInstagram.doInBackground(SearchActivity.java:156)

什么是Queryclass/对象?

您的 URL 格式错误。

    Query query = new Query(params[0]);
    String urlString = APIURL + "/"+ query +"/media/recent?client_id=" + INSTA_CONS_ID;
            URL url = new URL(urlString);

应该是

    String urlString = APIURL + "/"+ params[0] +"/media/recent?client_id=" + INSTA_CONS_ID;
            URL url = new URL(urlString);

但必须有使用 Query 对象的原因。所以上面不是最优雅的方式,但应该可以。