У меня проблема с отправкой запроса с типом контента как x- www-form-urlencoded в android дооснащении. Не уверен насчет ошибки, которую я делаю при отправке почтового запроса. Когда тот же запрос отправляется почтальоном, я могу получить ожидаемый правильный ответ. Более того, я попытался отправить тот же ответ через форму html и получил успешный ответ
public class RequestManager {
private static Retrofit retrofit;
private static final String BASE_URL = "https://ipguat.apps.net.pk/Ecommerce/api/Transaction/";
private OkHttpClient okhttpClient;
static Gson gson = new GsonBuilder()
.setLenient()
.create();
public static Retrofit getRetrofitInstance() {
if (retrofit == null) {
retrofit = new retrofit2.Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
return retrofit;
}
}
// MainActivity, откуда я отправляю почтовый запрос
private void sendPayment(String token) {
Date c = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = df.format(c);
Call<ResponseBody> call = service.sendPayment("102", "Arfeen Test", token, "00", "5", "03451234567", "arfeen@arfeen.me", "POSTMAN-TEST-ARF", "01", "Test Purchase", "www.facebook.com", "www.google.com", "TEST-01", formattedDate, "www.youtube.com");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
try {
renderPage(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(MainActivity.this, "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
}
}
);
}
// Интерфейс, где конечная точка для API упоминается
public interface TokenService {
@FormUrlEncoded
@POST("PostTransaction/")
Call<ResponseBody> sendPayment(@Field("MERCHANT_ID") String id,
@Field("MERCHANT_NAME") String merchantName,
@Field("TOKEN") String token,
@Field("PROCCODE") String proccode,
@Field("TXNAMT") String transaction,
@Field("CUSTOMER_MOBILE_NO") String mobile,
@Field("CUSTOMER_EMAIL_ADDRESS") String email,
@Field("SIGNATURE") String signature,
@Field("VERSION") String version,
@Field("TXNDESC") String productDescription,
@Field("SUCCESS_URL") String successUrl,
@Field("FAILURE_URL") String failureUrl,
@Field("BASKET_ID") String basketID,
@Field("ORDER_DATE") String orderDate,
@Field("CHECKOUT_URL") String checoutUrl);
}