Отправить параметр тела POST с помощью Retrofit - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть API-адрес URL: https://orderingspace.com/api/search Параметр тела: широта: 48.8834553 журнал: 2.3399433 миль: 6

Подскажите, пожалуйста, где я не прав в этом коде:

Мой класс интерфейса:

public interface SearchAPI {
String BASE_URL = "https://orderingspace.com/api/";
@POST("search")
Call<SearchData> getSearchData(@Header("content-type") String contentType, @Body SearchDataRequest dataRequest);}

Мой класс SearchData (POJO):

public class SearchData {

@SerializedName("status")
@Expose
public String status;
@SerializedName("message")
@Expose
public String message;
@SerializedName("result")
@Expose
public List<Result> result = null;
class Result {

    @SerializedName("id")
    @Expose
    public String id;
    @SerializedName("rname")
    @Expose
    public String rname;
    @SerializedName("email_address")
    @Expose
    public String emailAddress;
    @SerializedName("city")
    @Expose
    public String city;
    @SerializedName("address")
    @Expose
    public String address;
    @SerializedName("owner")
    @Expose
    public String owner;
    @SerializedName("user")
    @Expose
    public String user;
    @SerializedName("phone1")
    @Expose
    public String phone1;
    @SerializedName("phone2")
    @Expose
    public String phone2;
    @SerializedName("rest_images")
    @Expose
    public String restImages;
    @SerializedName("fax")
    @Expose
    public String fax;
    @SerializedName("status")
    @Expose
    public String status;
    @SerializedName("payment")
    @Expose
    public String payment;
    @SerializedName("acc_payment")
    @Expose
    public String accPayment;
    @SerializedName("delivery_type")
    @Expose
    public String deliveryType;
    @SerializedName("payment_process")
    @Expose
    public String paymentProcess;
    @SerializedName("delivery_time")
    @Expose
    public String deliveryTime;
    @SerializedName("delivery_area")
    @Expose
    public String deliveryArea;
    @SerializedName("receive_order")
    @Expose
    public String receiveOrder;
    @SerializedName("notify")
    @Expose
    public String notify;
    @SerializedName("email_radio")
    @Expose
    public String emailRadio;
    @SerializedName("email_image")
    @Expose
    public String emailImage;
    @SerializedName("email_text")
    @Expose
    public String emailText;
    @SerializedName("lat")
    @Expose
    public String lat;
    @SerializedName("log")
    @Expose
    public String log;
    @SerializedName("tax_rate")
    @Expose
    public String taxRate;
    @SerializedName("map_zones")
    @Expose
    public String mapZones;
    @SerializedName("hours")
    @Expose
    public String hours;
    @SerializedName("second_hours")
    @Expose
    public String secondHours;
    @SerializedName("more_hrs_radio")
    @Expose
    public String moreHrsRadio;
    @SerializedName("delivery_hrs_radio")
    @Expose
    public String deliveryHrsRadio;
    @SerializedName("delivery_hours")
    @Expose
    public String deliveryHours;
    @SerializedName("rdate")
    @Expose
    public String rdate;
    @SerializedName("vertices")
    @Expose
    public String vertices;
    @SerializedName("v_price")
    @Expose
    public String vPrice;
    @SerializedName("dely_type")
    @Expose
    public String delyType;
    @SerializedName("cuisine")
    @Expose
    public String cuisine;
    @SerializedName("partner")
    @Expose
    public String partner;
    @SerializedName("distance")
    @Expose
    public String distance;

    public String getId() {
        return id;
    }

    public String getRname() {
        return rname;
    }

    public String getEmailAddress() {
        return emailAddress;
    }

    public String getCity() {
        return city;
    }

    public String getAddress() {
        return address;
    }

    public String getOwner() {
        return owner;
    }

    public String getUser() {
        return user;
    }

    public String getPhone1() {
        return phone1;
    }

    public String getPhone2() {
        return phone2;
    }

    public String getRestImages() {
        return restImages;
    }

    public String getFax() {
        return fax;
    }

    public String getStatus() {
        return status;
    }
    public String getPayment() {
        return payment;
    }
    public String getAccPayment() {
        return accPayment;
    }
    public String getDeliveryType() {
        return deliveryType;
    }

    public String getPaymentProcess() {
        return paymentProcess;
    }

    public String getDeliveryTime() {
        return deliveryTime;
    }

    public String getDeliveryArea() {
        return deliveryArea;
    }

    public String getReceiveOrder() {
        return receiveOrder;
    }

    public String getNotify() {
        return notify;
    }

    public String getEmailRadio() {
        return emailRadio;
    }

    public String getEmailImage() {
        return emailImage;
    }

    public String getEmailText() {
        return emailText;
    }

    public String getLat() {
        return lat;
    }

    public String getLog() {
        return log;
    }

    public String getTaxRate() {
        return taxRate;
    }

    public String getMapZones() {
        return mapZones;
    }

    public String getHours() {
        return hours;
    }

    public String getSecondHours() {
        return secondHours;
    }

    public String getMoreHrsRadio() {
        return moreHrsRadio;
    }

    public String getDeliveryHrsRadio() {
        return deliveryHrsRadio;
    }

    public String getDeliveryHours() {
        return deliveryHours;
    }

    public String getRdate() {
        return rdate;
    }

    public String getVertices() {
        return vertices;
    }

    public String getvPrice() {
        return vPrice;
    }

    public String getDelyType() {
        return delyType;
    }

    public String getCuisine() {
        return cuisine;
    }

    public String getPartner() {
        return partner;
    }

    public String getDistance() {
        return distance;
    }
}

public String getStatus() {
    return status;
}

public String getMessage() {
    return message;
}

public List<Result> getResult() {
    return result;
}}

SearchDataRequest POJO класс:

public class SearchDataRequest
{
private double lat;
private double log;
private int miles;

public double getLat() {
    return lat;
}

public SearchDataRequest(double lat, double log, int miles) {
    this.lat = lat;
    this.log = log;
    this.miles = miles;
}

public void setLat(double lat) {
    this.lat = lat;
}

public double getLog() {
    return log;
}

public void setLog(double log) {
    this.log = log;
}

public int getMiles() {
    return miles;
}

public void setMiles(int miles) {
    this.miles = miles;
}}

Вызов MainActivity:

private void getSearchDataFromAPI()
{
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(SearchAPI.BASE_URL)
            .addConverterFactory(GsonConverterFactory.create()) //Here we are using the GsonConverterFactory to directly convert json data to object
            .build();


    SearchAPI api = retrofit.create(SearchAPI.class);
    SearchDataRequest searchDataRequest = new SearchDataRequest(48.8834553,2.3399433,6);

    api.getSearchData("application/x-www-form-urlencoded",searchDataRequest).enqueue(new Callback<SearchData>() {
        @Override
        public void onResponse(Call<SearchData> call, Response<SearchData> response) {
            Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onFailure(Call<SearchData> call, Throwable t) {
            Toast.makeText(MainActivity.this, "Fail", Toast.LENGTH_SHORT).show();
            System.out.println("Anshul : "+t.getMessage());
        }
    });
}

Ответ на запрос модифицированного вызова отправляет ответ об ошибке здесь.Пожалуйста, подскажите, как отправить POST-запрос с параметрами тела здесь.

1 Ответ

0 голосов
/ 24 ноября 2018

Вам необходимо изменить код интерфейса

public interface SearchAPI {
    String BASE_URL = "https://orderingspace.com/api";
    @FormUrlEncoded
    @POST("./search")
    Call<SearchData> getSearchData(@Field("lat") String lat,
                                   @Field("log") String log,
                                   @Field("miles") String miles);}

и в основной активности

SearchAPI api = retrofit.create(SearchAPI.class);
    api.getSearchData(lat,log,miles).enqueue(new Callback<SearchData>() {
        @Override
        public void onResponse(Call<SearchData> call, Response<SearchData> response) {
            Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onFailure(Call<SearchData> call, Throwable t) {
            Toast.makeText(MainActivity.this, "Fail", Toast.LENGTH_SHORT).show();
            System.out.println("Anshul : "+t.getMessage());
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...