Я очень новичок в использовании android studio и у меня возникли некоторые проблемы при использовании API: https://developer.companieshouse.gov.uk/api/docs/search/companies/companysearch.html#here
Я пытаюсь отправить запрос GET для отображения JSON в текстовом представленииОднако для этого мне нужно использовать ключ авторизации, и я пытаюсь отправить запрос GET с этим.Я понимаю, что это, вероятно, дублирующий пост, однако я искал пару дней, чтобы попытаться реализовать решение, и пока не добился успеха.Ниже приведен мой код:
public class MainActivity extends AppCompatActivity {
private TextView txtResult;
private RequestQueue queue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
queue = Volley.newRequestQueue(this);
txtResult = findViewById(R.id.txtResult);
Button buttonParse = findViewById(R.id.btnSearch);
buttonParse.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
jsonParse();
}
});
}
private void jsonParse(){
String url = "https://api.companieshouse.gov.uk/search/companies?q=tesco&items_per_page=1000&start_index=0";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("items");
for (int i = 0; i < jsonArray.length(); i++){
JSONObject companies = jsonArray.getJSONObject(i);
String title = companies.getString("address_snippet");
txtResult.append(title);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
String credentials = "MY_KEY";
String base64EncodedCredentials = Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
HashMap<String, String> headers = new HashMap<>();
headers.put("Authorization", "Basic " + base64EncodedCredentials);
return headers;
}
};
queue.add(request);
}
}
Пример тела ответа JSON:
{
"kind": "search#companies",
"page_number": 1,
"start_index": 0,
"items": [
{
"address_snippet": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"address": {
"postal_code": "AL7 1GA",
"locality": "Welwyn Garden City",
"country": "United Kingdom",
"address_line_1": "Kestrel Way",
"premises": "Tesco House, Shire Park"
},
"company_type": "plc",
"company_status": "active",
"kind": "searchresults#company",
https://developer.companieshouse.gov.uk/api/docs/index/gettingStarted/apikey_authorisation.html
Если это поможет, в приведенном выше документе объясняется, как отправитьключ API (я не могу понять это).В тот момент, когда кнопка нажата, она ничего не делает (я полагаю, из-за проблемы авторизации, не позволяющей приложению получить JSON), и я действительно буду признателен за помощь!