I have an android app that works well on other android devices but it fails on samsung s3 running android version 4.0.4 on data. Retrofit throws 404 (page not found error) but the page exists and if I make the same request on wifi it works well. Anyone with an idea on what could be misbehaving. Thanks
Please find below the stack trace
retrofit.RetrofitError: 404 Not Found
at retrofit.RestAdapter$RestHandler.invokeRequest (RestAdapter.java:388)
at retrofit.RestAdapter$RestHandler.access$100 (RestAdapter.java:220)
at retrofit.RestAdapter$RestHandler$2.obtainResponse (RestAdapter.java:278)
at retrofit.CallbackRunnable.run (CallbackRunnable.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:569)
at retrofit.Platform$Android$2$1.run (Platform.java:142)
at java.lang.Thread.run (Thread.java:856)
Below is the code I am using to make the call
val tailorsInterface = RestAdapter.Builder()
.setEndpoint(resources.getString(R.string.base_url))
.build().create(TailorsInterface::class.java)
tailorsInterface.addTailor(txtName.text.toString(), txtEmail.text.toString(),
Utils.parsePhone(txtPhone.text.toString(), "254"), txtAddress.text.toString(),
txtLon.text.toString(), txtLat.text.toString(), txtPassword.text.toString(),
Common.LOCATIONS!!.get(spTowns.selectedItemPosition).id, object : Callback<DefaultResponse> {
override fun success(defaultResponse: DefaultResponse, response: Response) {
dialog.hide()
if(defaultResponse.success == 1.toLong()){
val alertDialog: AlertDialog
val builder = AlertDialog.Builder(this@TailorsRegisterActivity)
.setTitle(resources.getString(R.string.app_name))
.setMessage("Tailor successfully registered, click OK to continue to login")
.setPositiveButton("OK") { dialog, which -> run{dialog.dismiss()
val loginIntent: Intent = Intent(this@TailorsRegisterActivity, TailorsLoginActivity::class.java)
startActivity(loginIntent)
} }
alertDialog = builder.create()
alertDialog.show()
}else{
val alertDialog: AlertDialog
val builder = AlertDialog.Builder(this@TailorsRegisterActivity)
.setTitle(resources.getString(R.string.app_name))
.setMessage("An Error occurred please try again later")
.setPositiveButton("OK") { dialog, which -> run{dialog.dismiss()
finish()} }
alertDialog = builder.create()
alertDialog.show()
}
}
@FormUrlEncoded
@POST("/tailors")
public fun addTailor(@Field("name") name: String, @Field("email") email: String,
@Field("phone") phone: String, @Field("address") address: String,
@Field("lon") lon: String, @Field("lat") lat: String,
@Field("password") password: String, @Field("town") town: Int,
cb: Callback<DefaultResponse>)
data class DefaultResponse (
var success: Long,
var message: String
)