当前位置: 首页 > 工具软件 > AutoSuggest > 使用案例 >

u001dphp html 样式,Quickstart: Suggest search strings with Bing Autosuggest REST API and Java

怀洛华
2023-12-01

Quickstart: Suggest search strings with Bing Autosuggest REST API and Java

07/15/2020

3 minutes to read

In this article

Follow this quickstart to learn how to make calls to Bing Autosuggest API and read the JSON response. This simple Java application sends a partial search query to the API, and returns suggestions for searches. While this application is written in Java, the API is a RESTful Web service compatible with most programming languages. The source code for this sample is available on GitHub

Prerequisites

Create and initialize a project

Create a new Java project in your favorite IDE or editor, and import the following libraries.

import java.io.*;

import java.net.*;

import java.util.*;

import javax.net.ssl.HttpsURLConnection;

import com.google.gson.Gson;

import com.google.gson.GsonBuilder;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

Create variables for your subscription key, the API host and path, your market code, and a search query.

static String subscriptionKey = "enter key here";

static String host = "https://api.bing.microsoft.com";

static String path = "/v7.0/Suggestions";

static String mkt = "en-US";

static String query = "sail";

Format the response

Create a method named prettify() to format the response returned from the Bing Video API. Use the Gson library's JsonParser to take in a JSON string and convert it into an object. Then, use GsonBuilder() and toJson() to create the formatted string.

// pretty-printer for JSON; uses GSON parser to parse and re-serialize

public static String prettify(String json_text) {

JsonParser parser = new JsonParser();

JsonObject json = parser.parse(json_text).getAsJsonObject();

Gson gson = new GsonBuilder().setPrettyPrinting().create();

return gson.toJson(json);

}

Construct and send the search request

Create a new method named get_suggestions() and perform the following steps:

Construct the URL for your request by combining your API host, path, and encoding your search query. Be sure to url-encode the query before appending it. Create a parameters string for your query by appending the market code to the mkt= parameter, and your query to the q= parameter.

public static String get_suggestions () throws Exception {

String encoded_query = URLEncoder.encode (query, "UTF-8");

String params = "?mkt=" + mkt + "&q=" + encoded_query;

//...

}

Create a new URL for the request with the API host, path, and parameters that you created in the previous step.

//...

URL url = new URL (host + path + params);

//...

Create a HttpsURLConnection object, and use openConnection() to create a connection. Set the request method to GET, and add your subscription key to the Ocp-Apim-Subscription-Key header.

//...

HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();

connection.setRequestMethod("GET");

connection.setRequestProperty("Ocp-Apim-Subscription-Key", subscriptionKey);

connection.setDoOutput(true);

//...

Store the API response in StringBuilder. After the response has been captured, close the InputStreamReader stream, and return the response.

//...

StringBuilder response = new StringBuilder ();

BufferedReader in = new BufferedReader(

new InputStreamReader(connection.getInputStream()));

String line;

while ((line = in.readLine()) != null) {

response.append(line);

}

in.close();

return response.toString();

In the main function of your application, call get_suggestions(), and print the response by using prettify().

public static void main(String[] args) {

try {

String response = get_suggestions ();

System.out.println (prettify (response));

}

catch (Exception e) {

System.out.println (e);

}

}

Example JSON response

A successful response is returned in JSON, as shown in the following example:

{

"_type": "Suggestions",

"queryContext": {

"originalQuery": "sail"

},

"suggestionGroups": [

{

"name": "Web",

"searchSuggestions": [

{

"url": "https://www.bing.com/cr?IG\u003d2ACC4FE8B02F4AACB9182A6502B0E556\u0026CID\u003d1D546424A4CB64AF2D386F26A5CD6583\u0026rd\u003d1\u0026h\u003dgvtP9TS9NwhajSapY2Se6y1eCbP2fq_GiP2n-cxi6OY\u0026v\u003d1\u0026r\u003dhttps%3a%2f%2fwww.bing.com%2fsearch%3fq%3dsailrite%26FORM%3dUSBAPI\u0026p\u003dDevEx,5003.1",

"displayText": "sailrite",

"query": "sailrite",

"searchKind": "WebSearch"

},

{

"url": "https://www.bing.com/cr?IG\u003d2ACC4FE8B02F4AACB9182A6502B0E556\u0026CID\u003d1D546424A4CB64AF2D386F26A5CD6583\u0026rd\u003d1\u0026h\u003dBTS0G6AakxntIl9rmbDXtk1n6rQpsZZ99aQ7ClE7dTY\u0026v\u003d1\u0026r\u003dhttps%3a%2f%2fwww.bing.com%2fsearch%3fq%3dsail%2bsand%2bpoint%26FORM%3dUSBAPI\u0026p\u003dDevEx,5004.1",

"displayText": "sail sand point",

"query": "sail sand point",

"searchKind": "WebSearch"

},

{

"url": "https://www.bing.com/cr?IG\u003d2ACC4FE8B02F4AACB9182A6502B0E556\u0026CID\u003d1D546424A4CB64AF2D386F26A5CD6583\u0026rd\u003d1\u0026h\u003dc0QOA_j6swCZJy9FxqOwke2KslJE7ZRmMooGClAuCpY\u0026v\u003d1\u0026r\u003dhttps%3a%2f%2fwww.bing.com%2fsearch%3fq%3dsailboats%2bfor%2bsale%26FORM%3dUSBAPI\u0026p\u003dDevEx,5005.1",

"displayText": "sailboats for sale",

"query": "sailboats for sale",

"searchKind": "WebSearch"

},

{

"url": "https://www.bing.com/cr?IG\u003d2ACC4FE8B02F4AACB9182A6502B0E556\u0026CID\u003d1D546424A4CB64AF2D386F26A5CD6583\u0026rd\u003d1\u0026h\u003dmnMdREUH20SepmHQH1zlh9Hy_w7jpOlZFm3KG2R_BoA\u0026v\u003d1\u0026r\u003dhttps%3a%2f%2fwww.bing.com%2fsearch%3fq%3dsailing%2banarchy%26FORM%3dUSBAPI\u0026p\u003dDevEx,5006.1",

"displayText": "sailing anarchy",

"query": "sailing anarchy",

"searchKind": "WebSearch"

},

{

"url": "https://www.bing.com/cr?IG\u003d2ACC4FE8B02F4AACB9182A6502B0E556\u0026CID\u003d1D546424A4CB64AF2D386F26A5CD6583\u0026rd\u003d1\u0026h\u003dWLFO-B1GG5qtBGnoU1Bizz02YKkg5fgAQtHwhXn4z8I\u0026v\u003d1\u0026r\u003dhttps%3a%2f%2fwww.bing.com%2fsearch%3fq%3dsailpoint%26FORM%3dUSBAPI\u0026p\u003dDevEx,5007.1",

"displayText": "sailpoint",

"query": "sailpoint",

"searchKind": "WebSearch"

},

{

"url": "https://www.bing.com/cr?IG\u003d2ACC4FE8B02F4AACB9182A6502B0E556\u0026CID\u003d1D546424A4CB64AF2D386F26A5CD6583\u0026rd\u003d1\u0026h\u003dquBMwmKlGwqC5wAU0K7n416plhWcR8zQCi7r-Fw9Y0w\u0026v\u003d1\u0026r\u003dhttps%3a%2f%2fwww.bing.com%2fsearch%3fq%3dsailflow%26FORM%3dUSBAPI\u0026p\u003dDevEx,5008.1",

"displayText": "sailflow",

"query": "sailflow",

"searchKind": "WebSearch"

},

{

"url": "https://www.bing.com/cr?IG\u003d2ACC4FE8B02F4AACB9182A6502B0E556\u0026CID\u003d1D546424A4CB64AF2D386F26A5CD6583\u0026rd\u003d1\u0026h\u003d0udadFl0gCTKCp0QmzQTXS3_y08iO8FpwsoKPHPS6kw\u0026v\u003d1\u0026r\u003dhttps%3a%2f%2fwww.bing.com%2fsearch%3fq%3dsailboatdata%26FORM%3dUSBAPI\u0026p\u003dDevEx,5009.1",

"displayText": "sailboatdata",

"query": "sailboatdata",

"searchKind": "WebSearch"

},

{

"url": "https://www.bing.com/cr?IG\u003d2ACC4FE8B02F4AACB9182A6502B0E556\u0026CID\u003d1D546424A4CB64AF2D386F26A5CD6583\u0026rd\u003d1\u0026h\u003deSSt0MRSbl2V0RFPSuVd-gC7fGOT4717pz55EBUgPec\u0026v\u003d1\u0026r\u003dhttps%3a%2f%2fwww.bing.com%2fsearch%3fq%3dsailor%2b2025%26FORM%3dUSBAPI\u0026p\u003dDevEx,5010.1",

"displayText": "sailor 2025",

"query": "sailor 2025",

"searchKind": "WebSearch"

}

]

}

]

}

Next steps

 类似资料: