Я пытаюсь создать web service
, который будет выполнен в JSON response
, а затем запросить DB с ним, чтобы вернуть данные магазина (JSON response)
.JSON Параметр для веб-службы
Я намерен использовать это позже с mobile app
. Но во время разработки я тестирую, используя AJAX calls
. На данный момент я использую запрос @GET
. Я смог успешно вернуть ответ JSON. Я столкнулся с проблемой передачи JSON Object
@GET method
. При отладке я вижу, что в моем входном параметре есть нулевое значение. Может ли кто-нибудь взглянуть на мой код и сообщить, что я делаю неправильно?
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PUT;
import java.util.Iterator;
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.JSONValue;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
/**
* REST Web Service
*
* @author Aj
*
* This service will return the offers valid for the IMSI number passed
*/
@Path("getOffers")
public class GetOffersResource {
@Context
private UriInfo context;
/**
* Creates a new instance of GetOffersResource
*/
public GetOffersResource() {
}
@GET
@Consumes("application/json")
@Produces("application/json")
public String getJson(final String input) {
JSONParser parser = new JSONParser();
String[] response = new String[5];
try {
Object obj = parser.parse(input);
JSONObject jsonObject = (JSONObject) obj;
offerProcess ofc = new offerProcess();
ofc.setLatitude((double) jsonObject.get("latitude"));
ofc.setLongitude((double) jsonObject.get("longitude"));
ofc.setIMSI((long) jsonObject.get("IMSI"));
response = ofc.fetchOffers();
} catch (ParseException e) {
JSONObject ser = new JSONObject();
ser.put("status", "error");
ser.put("reason", "Bad request");
return ser.toJSONString();
}
//TODO return proper representation object
JSONObject ser = new JSONObject();
JSONArray arr = new JSONArray();
arr.add("456TYU");
arr.add("OLED TV");
arr.add("24-JUL-2014");
arr.add("XYZ Enterprises");
arr.add("Gachibowli");
arr.add("9911278366");
ser.put("status", "success");
ser.put("Offers", arr);
System.out.println(ser);
return ser.toJSONString();
}
/**
* PUT method for updating or creating an instance of GetOffersResource
*
* @param content representation for the resource
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Consumes("application/json")
public void putJson(String content) {
}
}
Вот offerProcess класс -
public class offerProcess {
private double longitude;
private double latitude;
private long IMSI;
public double getLongitude() {
return longitude;
}
public double getLatitude() {
return latitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public long getIMSI() {
return IMSI;
}
public void setIMSI(long IMSI) {
this.IMSI = IMSI;
}
public String[] fetchOffers(){
String[] response = new String[5];
response[0] = "456TYU";
response[1] = "OLED TV";
response[2] = "24-JUL-2014";
response[3] = "XYZ Enterprises";
response[4] = "Gachibowli";
response[5] = "9980556990";
return response;
}
}
Для чего это стоит, я использую библиотеку JSON.Simple.
Может быть проблемой на стороне клиента. Пожалуйста, добавьте код с Ajax вызова – Ilya
Я не могу представить, чтобы изменить мой оригинальный пост, так что здесь идет - 'код вар requestData = {«долгота»:«77.681307», «широта»:«12,8250278», «IMSI»: «404490585029957»}; $ .ajax ({ типа: "POST", CONTENTTYPE: "применение/JSON", URL: url1, асинхронной: правда, данные: requestData, успех: функция (ответ) { console.log (response.status) } ' –