android - 在将数据发送到磁电机服务器时,使用@FormUrlEncoded 调用 Magneto API 进行改造
问题描述
覆盖有趣的 submitSupportTicket(createSupportTicket: MutableLiveData, question: String, details: String, department: String, filePath: String) { var getSupporttUrl = "https://xxxxxxxx/V1/ecomapi/postNewSupportTicket" if (filePath.isEmpty()) { /* var getDepartmentInput = Constants.getDefaultParameterJasonInput(Constants.getUserId()) getDepartmentInput.put("questionText",question) getDepartmentInput.put("detailText",details) getDepartmentInput.put("departmentId",department)*/
/* val requestMap: MutableMap<String, String> = HashMap()
requestMap["questionText"] = String(question.toByteArray(), charset("UTF-8"))
requestMap["detailText"] = String(details.toByteArray(), charset("UTF-8"))
requestMap["departmentId"] = String(department.toByteArray(), charset("UTF-8"))
requestMap["customerId"] = String(Constants.getUserId().toByteArray(), charset("UTF-8"))
val dataSupport = CreateSupportTicketModel(String(question.toByteArray(), charset("UTF-8")),
String(details.toByteArray(), charset("UTF-8")),
String(department.toByteArray(), charset("UTF-8")),
String(Constants.getUserId().toByteArray(), charset("UTF-8")))
val request = Gson().toJson(dataSupport)
val params: MutableMap<String, String> = HashMap()
params["data"] = request*/
val bodyQuestion: RequestBody = RequestBody.create("text/plain".toMediaTypeOrNull(), question)
val bodyDetails: RequestBody = RequestBody.create("text/plain".toMediaTypeOrNull(), details)
val bodyDepartment: RequestBody = RequestBody.create("text/plain".toMediaTypeOrNull(), department)
val bodyUserId: RequestBody = RequestBody.create("text/plain".toMediaTypeOrNull(), Constants.getUserId())
mView.getAPIComponent().retroService.getBaseUrl()
.createSupportTicketWithoutImage(Constants.getHeaderTokenForApisWithCType(),
getSupporttUrl, bodyQuestion,bodyDetails,bodyDepartment,bodyUserId
)
.enqueue(object : CustomRetroCallbacks<Any>() {
override fun onSuccess(resonse: Any?) {
createSupportTicket.value = resonse
}
override fun onError(response: Any?) {
// createSupportTicket.value = response?.message }
override fun onFailure(generalErrorMsg: String, systemErrorMsg: String) {
mView.getDepartmentListFailed(generalErrorMsg)
}
})
} else {
var imagePart: MultipartBody.Part? = null
if (!Utility.isBlankString(filePath)) {
val imageFile = File(filePath)
val inputStream = mView.context(true).contentResolver.openInputStream(Uri.fromFile(imageFile))
imagePart = MultipartBody.Part.createFormData("attachment[]", imageFile.name, imageFile.toImagePartBody())
}
val requestBodyQuestion: RequestBody = question.toRequestBody("*/*".toMediaTypeOrNull())
val requestBodyDepartment: RequestBody = department.toRequestBody("*/*".toMediaTypeOrNull())
val requestBodyDetails: RequestBody = details.toRequestBody("*/*".toMediaTypeOrNull())
val requestBodyUserId: RequestBody = Constants.getUserId().toRequestBody("*/*".toMediaTypeOrNull())
mView.getAPIComponent().retroService.getBaseUrl()
.createSupportTicket(Constants.getHeaderTokenForApisWithCType(), getSupporttUrl,
imagePart,
requestBodyQuestion,
requestBodyDetails,
requestBodyDepartment,
requestBodyUserId)
.enqueue(object : CustomRetroCallbacks<Any>() {
override fun onSuccess(resonse: Any?) {
createSupportTicket.value = resonse
createSupportTicket.value = false
}
override fun onError(response: Any?) {
createSupportTicket.value = false
// createSupportTicket.value = response?.message }
override fun onFailure(generalErrorMsg: String, systemErrorMsg: String) {
createSupportTicket.value = false
mView.getDepartmentListFailed(generalErrorMsg)
}
})
}
}
API接口
@POST
@Multipart
fun createSupportTicketWithoutImage(@HeaderMap headers: Map<String, String>,
@Url url: String?,
@Part("questionText ") questionText:RequestBody,
@Part("detailText ") detailText:RequestBody,
@Part("departmentId ") departmentId:RequestBody,
@Part("customerId ") customerId:RequestBody ): Call<Any>
解决方案
推荐阅读
- kubernetes - 需要运行复制脚本,将一些文件复制到安装路径 [init-container]
- virtual-reality - 360 度图像在 oculus go 的 a-frame 中开发的 Web 应用程序中显得模糊。如何解决?
- javascript - 添加 cookie 只显示一次弹出窗口
- javascript - 使用 SoapClient 时出现 UnhandledPromiseRejectionWarning
- drools - Drools 不适用于 spring-boot-devtools
- asp.net-mvc - 使用两个 linq 查询时的 Google Calendar Orderby
- laravel - Copper CRM Webhooks - 我需要在哪里放置 webhook 以获取事件通知?
- c# - 如何使用 Entity Framework Core 的内存数据库提供程序测试数据库视图?
- python-3.x - TypeError:“命名空间”对象不能解释为整数
- android - 如何让用户在 Android 中任意长的画布上绘图?