如何使用 Retrofit2 将原始数据发送到 Python 脚本
how to send rawdata to Python Script using Retrofit2
我正在使用 POST
方法调用 python 脚本并使用 Retrofit2
以 application/json
格式发送数据
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"
}
}
我想知道如何在 Android
中将 String
转换为 raw-data
。
这是我的代码:
AuthenticateRequest.kt
interface AuthenticateRequest {
@Headers(
"Content-Type: application/json"
)
@POST("/web/session/authenticate")
fun authenticate(
@Body authenticateReqBody: String
): Call<Authenticate>
}
MainActivity.kt
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())
}
}
})
非常感谢您在这件事上的时间和帮助。
如果您使用 GSON 作为转换器工厂,只需使用这个
@POST(Constants.URL.UPDATE_PROFILE_PIC)
Call<ProfilePicUpdateHelper> updateProfilePic(@Body ProfilePicHelper profilePicHelper);
默认情况下object会被转换成json。不需要 headers 和 String.
我正在使用 POST
方法调用 python 脚本并使用 Retrofit2
application/json
格式发送数据
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"
}
}
我想知道如何在 Android
中将 String
转换为 raw-data
。
这是我的代码:
AuthenticateRequest.kt
interface AuthenticateRequest {
@Headers(
"Content-Type: application/json"
)
@POST("/web/session/authenticate")
fun authenticate(
@Body authenticateReqBody: String
): Call<Authenticate>
}
MainActivity.kt
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())
}
}
})
非常感谢您在这件事上的时间和帮助。
如果您使用 GSON 作为转换器工厂,只需使用这个
@POST(Constants.URL.UPDATE_PROFILE_PIC)
Call<ProfilePicUpdateHelper> updateProfilePic(@Body ProfilePicHelper profilePicHelper);
默认情况下object会被转换成json。不需要 headers 和 String.