остальные API работают в почтальоне, но не в весенней загрузке - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь реализовать этот API https://api.bnm.gov.my/portal#operation / ERLatest

В соответствии с приведенным выше URL, его запрос GET с обязательным херадером Accept со значением "application / vnd.BNM.API. v1 + json "

когда я попробовал с почтальоном, могу получить ответ ->

{
    "data": [
        {
            "currency_code": "AUD",
            "unit": 1,
            "rate": {
                "date": "2020-05-04",
                "buying_rate": 2.7454,
                "selling_rate": 2.7904,
                "middle_rate": null
            }
        },
        {
            "currency_code": "CAD",
            "unit": 1,
            "rate": {
                "date": "2020-05-04",
                "buying_rate": 3.0465,
                "selling_rate": 3.0915,
                "middle_rate": null
            }
        },
        {
            "currency_code": "EUR",
            "unit": 1,
            "rate": {
                "date": "2020-05-04",
                "buying_rate": 4.7336,
                "selling_rate": 4.7786,
                "middle_rate": null
            }
        },
        {
            "currency_code": "GBP",
            "unit": 1,
            "rate": {
                "date": "2020-05-04",
                "buying_rate": 5.3769,
                "selling_rate": 5.4269,
                "middle_rate": null
            }
        },
        {
            "currency_code": "JPY",
            "unit": 100,
            "rate": {
                "date": "2020-05-04",
                "buying_rate": 4.0464,
                "selling_rate": 4.0914,
                "middle_rate": null
            }
        },
        {
            "currency_code": "SGD",
            "unit": 1,
            "rate": {
                "date": "2020-05-04",
                "buying_rate": 3.0368,
                "selling_rate": 3.0788,
                "middle_rate": null
            }
        },
        {
            "currency_code": "USD",
            "unit": 1,
            "rate": {
                "date": "2020-05-04",
                "buying_rate": 4.33,
                "selling_rate": 4.355,
                "middle_rate": null
            }
        }
    ],
    "meta": {
        "quote": "rm",
        "session": "1130",
        "last_updated": "2020-05-04 12:16:13",
        "total_result": 7
    }
}

Это то, что я сделал, чтобы получить тот же ответ в моем приложении весенней загрузки ->

@RequestMapping(value="/forex_check")
public String forexExchange() throws Exception{
    String url="https://api.bnm.gov.my/public/exchange-rate/USD";
    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.set("Accept", "application/vnd.BNM.API.v1+json");
    HttpEntity<String> entity = new HttpEntity<String>(headers);
    ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET,entity,String.class);
    return response.getBody();
}

Но он не может получить правильный ответ, что я получаю ->

The requested URL was rejected. Please consult with your administrator.

Your support ID is: 10497884431577109860

Когда я играл с почтальоном, я заметил, что когда я удаляю заголовок HOST, я получить такой же тип ответа. Но насколько я знаю, заголовок HOST автоматически устанавливается. Это весенняя загрузка RestTemplate не будет устанавливать этот заголовок HOST? если нет, то как установить его вручную?

Спасибо, ребята ....

1 Ответ

1 голос
/ 04 мая 2020

решение состоит в том, чтобы вручную установить заголовок User-Agent

в методе контроллера forexExchange (), просто добавьте эту строку, где вы устанавливаете свои заголовки: headers.set("User-Agent", "test");, чтобы она выглядела так:

    public String forexExchange() throws Exception{
        String url="https://api.bnm.gov.my/public/exchange-rate/USD";
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.set("Accept", "application/vnd.BNM.API.v1+json");
        headers.set("User-Agent", "test");
        HttpEntity<String> entity = new HttpEntity<>(headers);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET,entity,String.class);
        return response.getBody();
    }
...