无法 POST 使用 kotlin 改造 android 我的数据
Unable to POST my data using retrofit android using kotlin
我是 android studio 和 kotlin 的新手。我试图 post 我的数据(对象)到服务器上,但我收到 404 响应代码。
我的改造:
object RetrofitClient {
private var OurInstance : Retrofit?=null
val client = OkHttpClient.Builder()
val instance:Retrofit
get() {
if (OurInstance==null)
{
OurInstance =Retrofit.Builder()
.baseUrl("http://coreapi.imagin8ors.org:8080/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
}
return OurInstance!!
}
}
我的界面:
interface IMyAPI {
@GET("v1/child/{dynamic}/learningpods_new")
fun getDynamic(@Path("dynamic")dynamic:String):Observable<ArrayList<Data>>
@POST("v1/authenticate/create")
fun createParent(@Body parentDetails: ParentDetails):Call<ParentDetails>
}
我的代码片段 activity:
fun sendNetworkRequest(parentDetails: ParentDetails){
val retrofit=Retrofit.Builder().baseUrl("http://coreapi.imagin8ors.org:8080/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val client=retrofit.create(IMyAPI::class.java)
val call = client.createParent(parentDetails)
call.enqueue(object :Callback<ParentDetails>{
override fun onFailure(call: Call<ParentDetails>?, t: Throwable?) {
Toast.makeText(this@ParentmainActivity,"something went wrong",Toast.LENGTH_LONG).show()
}
override fun onResponse(call: Call<ParentDetails>?, response: Response<ParentDetails>?) {
Toast.makeText(this@ParentmainActivity,"successful :"+response?.code(),Toast.LENGTH_LONG).show()
}
})
}
函数调用:sendNetworkRequest(new_parent)
现在,返回的响应代码是 404。之前已经提出过这个问题,但那些解决方案对我不起作用。这就是为什么我 posted 作为另一个问题。
我提到的链接:, , link3 等等..
最初我使用的是 retrofitclient,但后来它不起作用,所以我尝试使用 sendNetworkResquest() 函数。但是,这也行不通。
我认为您需要的是 PUT
请求。
当我用 POST
尝试你的 API 时,我实际上得到了 405 - Method Not Allowed
。但是 PUT
有效.. 除了我没有发送数据,所以我得到一个 400
。但绝对不是 404
curl -X POST http://.../create -> Method not allowed
curl -X PUT http://.../create -> Bad Request
还要仔细检查您的正文是否确实包含后端端点指定的所需格式的有效数据,否则您会收到更多错误
我是 android studio 和 kotlin 的新手。我试图 post 我的数据(对象)到服务器上,但我收到 404 响应代码。
我的改造:
object RetrofitClient {
private var OurInstance : Retrofit?=null
val client = OkHttpClient.Builder()
val instance:Retrofit
get() {
if (OurInstance==null)
{
OurInstance =Retrofit.Builder()
.baseUrl("http://coreapi.imagin8ors.org:8080/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
}
return OurInstance!!
}
}
我的界面:
interface IMyAPI {
@GET("v1/child/{dynamic}/learningpods_new")
fun getDynamic(@Path("dynamic")dynamic:String):Observable<ArrayList<Data>>
@POST("v1/authenticate/create")
fun createParent(@Body parentDetails: ParentDetails):Call<ParentDetails>
}
我的代码片段 activity:
fun sendNetworkRequest(parentDetails: ParentDetails){
val retrofit=Retrofit.Builder().baseUrl("http://coreapi.imagin8ors.org:8080/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val client=retrofit.create(IMyAPI::class.java)
val call = client.createParent(parentDetails)
call.enqueue(object :Callback<ParentDetails>{
override fun onFailure(call: Call<ParentDetails>?, t: Throwable?) {
Toast.makeText(this@ParentmainActivity,"something went wrong",Toast.LENGTH_LONG).show()
}
override fun onResponse(call: Call<ParentDetails>?, response: Response<ParentDetails>?) {
Toast.makeText(this@ParentmainActivity,"successful :"+response?.code(),Toast.LENGTH_LONG).show()
}
})
}
函数调用:sendNetworkRequest(new_parent)
现在,返回的响应代码是 404。之前已经提出过这个问题,但那些解决方案对我不起作用。这就是为什么我 posted 作为另一个问题。
我提到的链接:
最初我使用的是 retrofitclient,但后来它不起作用,所以我尝试使用 sendNetworkResquest() 函数。但是,这也行不通。
我认为您需要的是 PUT
请求。
当我用 POST
尝试你的 API 时,我实际上得到了 405 - Method Not Allowed
。但是 PUT
有效.. 除了我没有发送数据,所以我得到一个 400
。但绝对不是 404
curl -X POST http://.../create -> Method not allowed
curl -X PUT http://.../create -> Bad Request
还要仔细检查您的正文是否确实包含后端端点指定的所需格式的有效数据,否则您会收到更多错误