当前位置: 首页 > 知识库问答 >
问题:

改装后请求不起作用,我收到500个错误代码(内部服务器错误)

邢弘业
2023-03-14

每次尝试通过Retrofit发送POST请求时,我都有500个内部服务器错误。当我发送GET请求时对我有用。下面的代码在kotlin中。

代码

 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时工作正常。我得到正确的响应,我不知道我哪里做错了。

提前感谢您

共有2个答案

臧曜瑞
2023-03-14

您已经尝试了带有改造的http post请求,并且服务器已使用500错误代码响应您,并且您已尝试使用浏览器http get请求并且它已经起作用。您是否尝试过通过改造来获取 http 请求?是否检查了服务器日志?是否有任何错误?

孔宇
2023-03-14

最好不要使用 JSONObject 创建参数对象。像这样将此工作委派给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”而不开始/

基本URL:总是以/结尾

@Url:不要以/开头

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

 类似资料:
  • 每次我试图通过改装发送POST请求时,我都有500个内部服务器错误。当我发送GET请求时,它会正确发送。我确信服务器端的一切都正常。我的代码怎么了? 请求声明:

  • 我正试图通过Axios在本地发送一个POST请求,其中包含用户名和密码。 我正在部署一个Flask应用程序http://127.0.0.1:5000/login,它处理/login路由。POST请求失败,出现以下错误 我研究了一点,认为这可能是CORS的问题,但情况似乎并非如此,因为我尝试了一个Axios GET请求,它工作正常(响应记录正确)。这是我的部分代码 查看ChromeDevTools,

  • 我正在使用图像上传base64Encode字符串对api调用进行改造。它发送的数据完美,但改装返回响应内部服务器错误500,我发送的请求类型是Body自定义类。请帮我做什么。

  • 问题内容: 我正在尝试为这个工作中的项目学习AJAX。我有一个网站加载病人正在服用的药物。 我递归调用此AJAX函数,以便它将附加一个包含单种药物和7天历史记录的新表。我在使代码在FF和IE中执行时遇到问题。在chrome中效果很好。我有显示xmlhttp.status的警报,这是我得到的: xmlhttp.status == 500(内部服务器错误)。 我注释掉了所有递归,因此将其范围缩小到了这

  • 我收到以下错误 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请联系服务器管理员,webmaster@strivemedicare.in并告知他们错误发生的时间,以及可能导致错误的任何行为。 有关此错误的详细信息,请参阅服务器错误日志。 此外,尝试使用错误文档处理请求时遇到 500 内部服务器错误错误。

  • 我在Windows 8.1机器上使用XAMPP。我在cgi-bin中放置了一个基本的hello world python脚本。我可以从命令行运行脚本而不会出现错误,但当我尝试从浏览器调用它时,我会收到错误500。错误日志指出: [2017年9月29日星期五11:06:36.996021][cgi:错误][pid 5696:tid 1728][客户端192.168.1.6:49556]AH01215