Retrofit Post 请求无效,我收到 500 错误代码(内部服务器错误)

Retrofit Post request is not working and i'm getting 500 error code (Internal server erroe)

我有 500 个内部服务器错误,每次我尝试通过 Retrofit 发送 POST 请求时。当我发送 GET 请求时,它正在为我工​​作。下面的代码是在科特林。

代码

 val token = (activity as MainActivity).stockService.status.getTocken()
        val client =
            OkHttpClient.Builder().addInterceptor { chain ->
                val newRequest: Request = chain.request().newBuilder()
                    .addHeader("Authorization", "Bearer $token")
                    .addHeader("Content-Type", "application/json")
                    .build()
                chain.proceed(newRequest)
            }.build()
        val gson = GsonBuilder()
            .setLenient()
            .create()
        val retrofit: Retrofit = Retrofit.Builder()
            .client(client)
            .baseUrl("https://example.com")
            .addConverterFactory(ScalarsConverterFactory.create())
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build()

        val service = retrofit.create(RestClient::class.java)


        val paramObject = JSONObject()
        paramObject.put("disclosed_quantity", 0)
        paramObject.put("exchange", "abd")
        paramObject.put("instrument_token", 3045)
        paramObject.put("order_tag", "test_order")
        paramObject.put("order_type", "CHECK")


        val call = service.createUser(paramObject.toString())
        call.enqueue(object : Callback<Any> {
            override fun onFailure(call: Call<Any>, t: Throwable) {
                Toast.makeText(activity, "Failed :$t", Toast.LENGTH_SHORT).show()
            }

            override fun onResponse(call: Call<Any>, response: Response<Any>) {
                Toast.makeText(
                    activity,
                    "Sucess ${response.body()},${response.code()}, ${response.errorBody()}",
                    Toast.LENGTH_SHORT
                ).show()
            }

        })

RestClient

interface RestClient {

@POST("/api/v2/order")
fun createUser(@Body order: String): Call<Any> }

但是当我在 POSTMAN 中尝试 POST 时工作正常。我得到正确的回应我不知道我哪里做错了。

提前致谢

最好不要用JSONObject创建paramObject。像这样将这项工作委托给 Retrofit 会容易得多:

// Create Order object
class Order(
    val disclosed_quantity: Int,
    val exchange: String,
    val instrument_token: String,
    val order_tag: String,
    val order_type: String
)

// Use it as @Body
@POST("api/v2/order")
fun createUser(@Body order: Order): Call<Any>

第二个问题可能出在您的 URL "/api/v2/order" 上。我觉得应该是"api/v2/order"不开始/

Base URL: always ends with /

@Url: DO NOT start with /

更多详细信息https://inthecheesefactory.com/blog/retrofit-2.0/en“新URL解析概念”

您已尝试使用改进的 http post 请求,并且服务器以 500 错误代码响应您,并且您已尝试使用浏览器进行 http get 请求并且成功。您是否尝试过 http get request with retrofit?你检查服务器日志了吗?有没有错误?