java - Instagram 主题标签搜索查询出现 'filenotfound' 异常

标签 java android instagram-api

我正在尝试运行一个程序,在 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)

最佳答案

什么是Query类/对象?

您的网址格式不正确。

    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 对象肯定是有原因的。所以上面的方法不是最优雅的方法,但它应该可行。

关于java - Instagram 主题标签搜索查询出现 'filenotfound' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32486365/

相关文章:

android - 无法在android中使用videoview播放rtsp

android - 如何设置新管理员

facebook-graph-api - 新的 Instagram Graph API 上的标签搜索媒体在哪里?

java - JFreechart - XY Step Chart 范围和精度问题

java - 递归函数的空间复杂度估计

java - 如何使用带有内联 XSD 的 jaxb2 maven 插件?

java - WSDL 复杂 CVC 错误

android - 具有相同包名的两个不同项目

instagram-api - Instagram API : The access_token provided is invalid

android - 在 Instagram 中使用分享 Intent 。如何知道用户是否实际分享或取消分享 Activity ?