Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
org.ksoap2.transport.HttpResponseException 400从Kotlin调用.svc时出现错误请求_Kotlin_Wcf_Ksoap2 - Fatal编程技术网

org.ksoap2.transport.HttpResponseException 400从Kotlin调用.svc时出现错误请求

org.ksoap2.transport.HttpResponseException 400从Kotlin调用.svc时出现错误请求,kotlin,wcf,ksoap2,Kotlin,Wcf,Ksoap2,我看过其他关于这方面的帖子,但似乎都没有帮助。问题似乎是将参数添加到请求中。注意,这是一个.svc,而不是wsdl。C#.svc文件的数据约定为: [DataContract] public class MyMethod_In { [DataMember] public string rc; } Kotlin代码:(常数取出以便于阅读,名称更改以保护无辜者) 问题似乎是soapObject.addProperty行。我也尝试过其他代码,其中我构造了属性信息并设置了名称、类型和值

我看过其他关于这方面的帖子,但似乎都没有帮助。问题似乎是将参数添加到请求中。注意,这是一个.svc,而不是wsdl。C#.svc文件的数据约定为:

[DataContract]
public class MyMethod_In
{
    [DataMember]
    public string rc;
}
Kotlin代码:(常数取出以便于阅读,名称更改以保护无辜者)

问题似乎是
soapObject.addProperty
行。我也尝试过其他代码,其中我构造了属性信息并设置了名称、类型和值,但我仍然总是得到400错误。我用一种类型的字符串和一种类型的JSON尝试了一下,结果没有什么不同

我不能完全确定一些硬编码的值,但我似乎调用的服务是正确的,因为我尝试了另一个没有输入参数的服务,结果很好,得到了响应


我可能错过了一件小事,但找不到。你知道为什么这个要求不好吗?感谢您为okhttp3 4.2.0版找到了答案。正如我所怀疑的,我需要传递JSON数据。此代码用于:

val json = "{ \"rc\":\"xyz\" }"
val mediaTypeJson = "application/json; charset=utf-8".toMediaType()
val requestBody = json.toString().toRequestBody(mediaTypeJson)

val request = Request.Builder()
    .url("https://qa.mysite.com/ws/MyService.svc/MyMethod")
    .post(requestBody)
    .build()

可能应该清理它并使用gson或其他东西,但至少这是有效的。

如果使用C#,您能否成功调用此WCF服务?是的。我也在试验okhttp3 4.2.0。同样的交易——糟糕的要求。这段代码似乎也更简单——makeRequest创建一个okHttpClient,创建一个请求(并添加参数),然后解析响应。我发了一个帖子,所以我不会得到405。看起来不错,但我还是拿到了400分。它看起来类似于服务器日志,其中正确调用了C#one。需要做更多的调试。需要在Kotlin中进行JSON字符串化吗?我怀疑我的问题可能与以下C#服务有关:[OperationContract,WebInvoke(Method=“POST”,RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Json)]
val json = "{ \"rc\":\"xyz\" }"
val mediaTypeJson = "application/json; charset=utf-8".toMediaType()
val requestBody = json.toString().toRequestBody(mediaTypeJson)

val request = Request.Builder()
    .url("https://qa.mysite.com/ws/MyService.svc/MyMethod")
    .post(requestBody)
    .build()