>

POST 를 사용하여 파이썬 스크립트를 호출하고 있습니다   application/json 에서 데이터를 전송하는 방법   Retrofit2 를 사용한 형식

Python 스크립트는 다음을 허용합니다 :

{
u'params': {
    u'login': u'admin',
    u'password': u'a',
    u'db': u'hrm_v10',
    u'base_location': u'10.42.0.149:8069'
},
u'jsonrpc': u'2.0',
u'id': 1,
u'method': u'call'
}

서버로 보내는 것은 :

{
"id": 1,
"jsonrpc": "2.0",
"method": "call",
"params": {
    "base_location": "10.42.0.149:8069",
    "db": "discuss_v10",
    "login": "admin",
    "password": "admin"
}
}

String 를 변환하는 방법을 알고 싶습니다   raw-data 로  와이즈 비즈 .

내 코드는 다음과 같습니다 :

AuthenticateRequest.kt

Android

MainActivity.kt

interface AuthenticateRequest {
    @Headers(
            "Content-Type: application/json"
    )
    @POST("/web/session/authenticate")
    fun authenticate(
            @Body authenticateReqBody: String
    ): Call<Authenticate>
}

이 문제에 대해 시간과 도움을 주셔서 대단히 감사합니다.

val authenticateReq = app.retrofit.create(AuthenticateRequest::class.java) val reqBody = AuthenticateReqBody(id = 1, params = Params( App.host, App.login, App.password, App.database )) val body = Gson().toJson(reqBody) val call = authenticateReq.authenticate(body) call.enqueue(object : Callback<Authenticate> { override fun onFailure(call: Call<Authenticate>, t: Throwable) { Log.d(TAG, "onFailure: " + t.message) } override fun onResponse(call: Call<Authenticate>, response: Response<Authenticate>) { if (response.isSuccessful) { Log.d(TAG, "onResponse: Success " + response.body()) } else { Log.d(TAG, "onResponse: Failed " + response.errorBody()!!.string()) } } })

  • 답변 # 1

    컨버터 팩토리로 GSON을 사용하는 경우 이것을 사용하십시오

    @POST(Constants.URL.UPDATE_PROFILE_PIC)
        Call<ProfilePicUpdateHelper> updateProfilePic(@Body ProfilePicHelper profilePicHelper);
    
    

    기본적으로 객체는 json으로 변환됩니다. 헤더와 문자열이 필요 없습니다.

관련 자료

  • 이전 Java를 사용하여 유니 코드 텍스트 내용 변경
  • 다음 javascript - ngFor 루프 사이에 항목 삽입