Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
500错误代码,带“0”;“内部服务器错误”;消息,在android应用程序中使用API执行POST方法时_Android_Kotlin_Retrofit2_Internal Server Error - Fatal编程技术网

500错误代码,带“0”;“内部服务器错误”;消息,在android应用程序中使用API执行POST方法时

500错误代码,带“0”;“内部服务器错误”;消息,在android应用程序中使用API执行POST方法时,android,kotlin,retrofit2,internal-server-error,Android,Kotlin,Retrofit2,Internal Server Error,为了确认API,我在POSTMAN应用程序中进行了尝试,但响应正常,数据已成功插入。下面是邮递员的调查结果 在Logcat中也会出现以下错误 2021-06-01 17:56:58.522 16534-16534/? E/ample.addcours: Unknown bits set in runtime_flags: 0x8000 2021-06-01 17:56:58.893 1791-2057/? E/SurfaceFlinger: ro.sf.lcd_density must be

为了确认API,我在POSTMAN应用程序中进行了尝试,但响应正常,数据已成功插入。下面是邮递员的调查结果

在Logcat中也会出现以下错误

2021-06-01 17:56:58.522 16534-16534/? E/ample.addcours: Unknown bits set in runtime_flags: 0x8000
2021-06-01 17:56:58.893 1791-2057/? E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property
2021-06-01 17:56:58.897 1791-1897/? E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property
2021-06-01 17:57:01.325 1887-1887/? E/netmgr: Failed to open QEMU pipe 'qemud:network': Invalid argument
2021-06-01 17:57:01.713 1895-1895/? E/wifi_forwarder: RemoteConnection failed to initialize: RemoteConnection failed to open pipe

2021-06-01 17:57:48.882 1746-16596/? E/ResolverController: No valid NAT64 prefix (100, <unspecified>/0)
2021-06-01 17:57:48.915 2062-2154/system_process E/InputDispatcher: Window handle Window{33fd41d u0 com.example.addcourse/com.example.addcourse.RegisterActivity} has no registered input channel
2021-06-01 17:57:48.934 2062-6837/system_process E/InputDispatcher: Window handle Window{33fd41d u0 com.example.addcourse/com.example.addcourse.RegisterActivity} has no registered input channel 
2021-06-01 17:56:58.52216534-16534/?E/ample.ADDCURS:运行时设置的未知位\u标志:0x8000
2021-06-01 17:56:58.893 1791-2057/? E/SurfaceFlinger:ro.sf.lcd\u密度必须定义为构建属性
2021-06-01 17:56:58.897 1791-1897/? E/SurfaceFlinger:ro.sf.lcd\u密度必须定义为构建属性
2021-06-01 17:57:01.325 1887-1887/? E/netmgr:无法打开QEMU管道“qemud:网络”:参数无效
2021-06-01 17:57:01.713 1895-1895/? E/wifi_转发器:RemoteConnection未能初始化:RemoteConnection未能打开管道
2021-06-01 17:57:48.882 1746-16596/? E/ResolverController:没有有效的NAT64前缀(100,/0)
2021-06-01 17:57:48.915 2062-2154/system_process E/InputDispatcher:窗口句柄窗口{33fd41d u0 com.example.addcourse/com.example.addcourse.RegisterActivity}没有注册的输入通道
2021-06-01 17:57:48.934 2062-6837/system_process E/InputDispatcher:窗口句柄窗口{33fd41d u0 com.example.addcourse/com.example.addcourse.RegisterActivity}没有注册的输入通道
因为我是android应用程序的新手。这是我第一个使用API概念的程序。 这是我试过的代码。 请引导我找到问题所在

data class RegisterResponse(
    @SerializedName("status")
    val status: Int,
    @SerializedName("message")
    val message: String
)
 object ApiClient {

    // retrofit is HTTP client which can send request to API
    fun getRetrofit() : Retrofit {

        val retrofit = Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create())  // this is used to automatically convert json string into java/kotlin object and java/kotlin object into json string whenever required
            .baseUrl("https://XXXX.com/XXXX/api/index.php/")

            .build()

        return retrofit
    }
}

interface ApiService { 
 //   @Headers("Content-type: application/json")
    @POST("Course/addCourse")
    @FormUrlEncoded

    fun signup(
        @Field("course_title") title: String,
        @Field("course_desc") desc: String,
        @Field("course_fees") fees: String
    ) : Call<RegisterResponse>

}

class RegisterActivity : AppCompatActivity() {
    lateinit var binding: ActivityRegisterBinding
    lateinit var retrofit: Retrofit
    lateinit var apiSerice: ApiService

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityRegisterBinding.inflate(layoutInflater)
        setContentView(binding.root)
        retrofit = ApiClient.getRetrofit()
        apiSerice = retrofit.create(ApiService::class.java)
        binding.btnRegister.setOnClickListener {
            register()
        }
    }

    private fun register() {
        val title = binding.etCourseTitle.text.toString()
        val desc = binding.etCourseDescription.text.toString()
        val fees = binding.etCourseFee.text.toString()

        val call = apiSerice.signup(title, desc, fees)

        val progressDialog = ProgressDialog(this);
        progressDialog.setMessage("Please wait. We are processing your request")
        progressDialog.setCancelable(false)

        call.enqueue(object: Callback<RegisterResponse> {
            override fun onResponse(call: Call<RegisterResponse>, response: Response<RegisterResponse>) {

                progressDialog.dismiss()

                if(response.isSuccessful) {
                    val registerResponse: RegisterResponse? = response.body()
                    if(registerResponse?.status == 0) {
                        Toast.makeText(baseContext, "Registered successfully", Toast.LENGTH_LONG).show()
                    } else {
                        Toast.makeText(baseContext, registerResponse?.message, Toast.LENGTH_LONG).show()
                    }
                } else {
                    Toast.makeText(baseContext, response.message()+"/nSomething went wrong. Please retry.(1)", Toast.LENGTH_LONG).show()
                }
            }
            override fun onFailure(call: Call<RegisterResponse>, t: Throwable) {
                progressDialog.dismiss()
                Toast.makeText(baseContext, t.message+"Something went wrong. Please retry.(2)", Toast.LENGTH_LONG).show()
            }
        })
        progressDialog.show()
    }
}
数据类寄存器响应(
@序列化名称(“状态”)
val状态:Int,
@SerializedName(“消息”)
val消息:字符串
)
对象客户端{
//改型是HTTP客户端,它可以向API发送请求
fun GetReformation():改装{
val reformation=reformation.Builder()
.addConverterFactory(GsonConverterFactory.create())//这用于在需要时自动将json字符串转换为java/kotlin对象,并将java/kotlin对象转换为json字符串
.baseUrl(“https://XXXX.com/XXXX/api/index.php/")
.build()
回流改造
}
}
接口服务{
//@Headers(“内容类型:application/json”)
@POST(“课程/添加课程”)
@FormUrlEncoded
有趣的注册(
@字段(“课程名称”)标题:字符串,
@字段(“课程描述”)描述:字符串,
@字段(“课程费用”)费用:字符串
):呼叫
}
类RegisterActivity:AppCompatActivity(){
lateinit变量绑定:ActivityRegisterBinding
lateinit var改装:改装
lateinit var apiSerice:ApiService
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
绑定=ActivityRegisterBinding.充气(放平)
setContentView(binding.root)
改型=ApiClient.getRefundation()
apiseriece=reformation.create(ApiService::class.java)
binding.btnRegister.setOnClickListener{
寄存器()
}
}
私人娱乐登记册(){
val title=binding.etCourseTile.text.toString()
val desc=binding.etCoursedDescription.text.toString()
val fees=binding.etCourseFee.text.toString()
val call=apiSerice.signup(标题、说明、费用)
val progressDialog=progressDialog(此);
progressDialog.setMessage(“请稍候,我们正在处理您的请求”)
progressDialog.setCancelable(false)
排队(对象:Callback{
覆盖fun onResponse(调用:调用,响应:响应){
progressDialog.disclose()的
if(response.issucessful){
val registerResponse:registerResponse?=response.body()
if(registerResponse?.status==0){
Toast.makeText(baseContext,“注册成功”,Toast.LENGTH\u LONG.show())
}否则{
Toast.makeText(baseContext,registerResponse?.message,Toast.LENGTH\u LONG.show())
}
}否则{
Toast.makeText(baseContext,response.message()+“/n某些内容出错。请重试。(1)”,Toast.LENGTH\u LONG.show()
}
}
覆盖失效时的乐趣(调用:调用,t:可丢弃){
progressDialog.disclose()的
Toast.makeText(baseContext,t.message+“出现问题。请重试。(2)”,Toast.LENGTH\u LONG.show()
}
})
progressDialog.show()
}
}

您的API需要请求正文中的JSON数据。但是您正在尝试以FormURLEncoded的形式发送数据

在Kotlin中创建一个数据模型类,如下所示

data class Course(

    @SerializedName("course_title")
    val courseTitle: String,

    @SerializedName("course_desc")
    val courseDesc: String,

    @SerializedName("course_fees")
    val courseFees: String
)
并在
ApiService.kt
文件中进行更改

interface ApiService { 

    @POST("Course/addCourse")
    fun signup(
       @Body data: Course
    ): Call<RegisterResponse>

}

您收到的错误是什么?我收到的是“内部服务器错误”@ohhhtatvarun您可以检查代码UAE a logger以记录您的改装请求,然后也许您可以检查您的请求有什么问题。@ohhhtatvarun感谢您的输入,添加了错误,请检查一下。在我做了上述更改后,它工作正常。谢谢。
// rest of your code
// .....
val data = Course("Some course title", "Course desc", "150")

val service = .....

// call and pass parameter

val call = serivce.signup(data)

// handle response here