【问题标题】:Unable to POST my data using retrofit android using kotlin无法使用使用 kotlin 的改造 android 发布我的数据
【发布时间】:2018-08-14 09:08:26
【问题描述】:

我是 android studio 和 kotlin 的新手。我试图将我的数据(对象)发布到服务器上,但我收到了 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>
}

在我的活动中编码 sn-p:

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。这个问题之前已经提出过,但这些解决方案对我不起作用。这就是为什么我发布另一个问题。

我提到的链接:link1link2link3 等等。

最初我使用的是改造客户端,但后来它不起作用,所以我尝试使用 sendNetworkResquest() 函数。但是,这也不起作用。

【问题讨论】:

    标签: android post kotlin http-status-code-404 retrofit2


    【解决方案1】:

    我认为您需要的是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
    

    还要仔细检查您的正文是否包含后端端点指定的所需格式的有效数据,否则您会收到更多错误

    【讨论】:

    • 我也尝试过 PUT 请求。我仍然收到 404 响应代码。我在 POSTMAN 上的目标网址显示 POST 请求的响应代码为 405,PUT 请求的响应代码为 400。
    • 我已经修改了代码和问题。你能回答同样的问题吗?
    • 好吧,接受答案并发布另一个问题会更好。无论如何,您仍然有问题,可能与您尝试上传的格式有关。为了帮助你,我要么需要规范,要么需要一个有效的 curl 或 postman 配置。也许这个 createParent 方法的实现
    • 你是对的?我需要一个 PUT 请求,因为这就是它在后端的配置方式。但是,问题在于我发送的正文中的参数是错误的。可能您可以修改您的答案以包括这一点(接受它)。此外,我已经回滚了这个问题,所以它完全符合你的答案。
    • @Eswar 我很乐意这样做,但我不知道你的身体出了什么问题:)
    猜你喜欢
    • 1970-01-01
    • 2019-06-14
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多