Как запросить GET для Ipstack API из службы RESTFul в Java
Я пытаюсь получить местоположение пользователя по IP с помощью API IPStack. Этот метод перегружен оригиналом. Идея заключалась в том, что если пользователь получит местоположение, перейдет к другой функции, а если нет, то к поиску и получит ее. Может быть, я должен использовать JQuery или PHP uCurl, как примеры документации https://ipstack.com/documentation, но я ничего не сделал, как это сделать из Eclipse с Java (это необходимо), поэтому я все еще пробую как ОТЛИЧНОЕ обслуживание, но ничего.
public Users newUser(String username, String email) {
Client cliente = ClientBuilder.newClient();
WebTarget servicio = cliente.target(MONGODB + MONGOCOLL + "?apiKey=" + MONGOKEY);
try {
JSONObject user = new JSONObject();
JSONObject location = new JSONObject();
user.put("username", username);
user.put("email", email);
ArrayList<String> following = new ArrayList<String>();
user.put("following", following);
ArrayList<String> friends = new ArrayList<String>();
user.put("friends", friends);
String ipstackfields = "&output=json&fields=country_name,city,zip";
Client clientipstack = ClientBuilder.newClient();
WebTarget ipstackserv = clientipstack
.target(IPSTACK + IPSTACKEND + "?apiKey=" + IPSTACKKEY + ipstackfields);
Response resplocated = ipstackserv.request().get();
String slocate = resplocated.readEntity(String.class);
JSONObject located = new JSONObject(slocate);
location.put("country", located.get("country_name"));
location.put("city", located.get("city"));
location.put("postcode", located.get("zip"));
user.put("location", location);
Response respuesta = servicio.request().post(Entity.json(user.toString()));
if (respuesta.getStatus() == Status.OK.getStatusCode()) {
// TODO: leer la respuesta de la llamada y trasformar el objeto
// JSON a un mensaje para devolverlo
String s = respuesta.readEntity(String.class);
JSONObject usuario = new JSONObject(s);
return JSONtoUser(usuario);
} else {
return null;
}
} catch (Exception e) {
return null;
}
}
0 ответов
Ваш код кажется выполненным на стороне сервера. Когда ваш метод newUser
необходимо вызвать IP-адрес клиента из заголовка запроса и передать его в API геолокации.
Заголовок запроса для поиска зависит от вашего сервера и конфигурации, но обычно называется Client-IP
или же X-Forwarded-For
,
Получив IP-адрес клиента, вам нужно добавить его перед параметрами запроса с помощью Ipstack.
К вашему сведению, я рекомендую взглянуть на Ipregistry для более быстрого и надежного решения, чем Ipstack (заявление об отказе: я запускаю сервис). Вот как передать вашу информацию в Ipregistry:
https://api.ipregistry.co/54.85.132.205?key=tryout
где 54.85.132.205
а также tryout
должны быть заменены соответственно вашим IP-адресом клиента и ключом API.