【问题标题】:How to correctly handle a response from the Bing Search API in Java?如何在 Java 中正确处理来自 Bing Search API 的响应?
【发布时间】:2014-02-12 16:58:55
【问题描述】:

我已成功从Java 中的Bing's-Search-API 下载图像。但是,我不明白如何处理响应。

例如,如果没有找到图片,或者如果用户尝试搜索成人内容(即使设置为中等),我应该如何catch 这些回复?

非常感谢。

这是我的代码:

public void SearchWithBing(String search){

        search = search.replaceAll(" ", "%20");
        String accountKey="acKey";
        byte[] accountKeyBytes = Base64.encodeBase64((accountKey + ":" + accountKey).getBytes());
        String accountKeyEnc = new String(accountKeyBytes);
        URL url;
        try {
            url = new URL(
                    "https://api.datamarket.azure.com/Bing/Search/Image?Query=%27" + search + "%27&$top=50&$format=json");

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Authorization", "Basic " + accountKeyEnc);
        conn.setRequestProperty("Accept", "application/json");
        BufferedReader br = new BufferedReader(new InputStreamReader(
                (conn.getInputStream())));
        String output;
        System.out.println("Output from Server .... \n");

        while ((output = br.readLine()) != null) {
                gsonParser(output);
                System.out.println(output);
        }

        conn.disconnect();

        } catch (MalformedURLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

       //EndOfBingSearch  
    } 

【问题讨论】:

    标签: java json search bing bing-api


    【解决方案1】:

    您可以使用 Gson:

        Gson gson = (new GsonBuilder()).create();
    BingSearchResults bingSearchResults = gson.fromJson(res, BingSearchResults.class);
    

    具有以下类:

    public class BingSearchResults {
    
    public ResultsContent d;
    
    public static class ResultsContent {
        public Result[] results;
        public String __next;
    }
    
    public static class Result {
        public String ID;
        public String Title;
        public String Description;
        public String DisplayUrl;
        public String Url;
        public Metadata __metadata;
    
    }
    
    public static class Metadata {
        public String uri;
        public String type;
    }
    
    }
    

    【讨论】:

    • 是的。这是旧的。我最终做了同样的事情,但忘记更新帖子了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2018-06-06
    • 2019-04-25
    • 1970-01-01
    相关资源
    最近更新 更多