Android 使用OkHttp客户端执行原始graphQL查询
我有一个graphQL查询,我想将其作为原始请求执行,不想依赖任何客户端来执行此请求(我不想使用apollo client for android来执行它) 我已经创建了形成此查询的字符串,并尝试使用OkHttp客户端发出此请求,但我认为缺少一些内容,因为每次发送请求时,响应都是内部服务器错误。但是如果我使用apollo client for android执行这个查询,它会返回一个响应 下面是我使用OkHttp执行原始查询请求的尝试:Android 使用OkHttp客户端执行原始graphQL查询,android,kotlin,graphql,apollo-client,Android,Kotlin,Graphql,Apollo Client,我有一个graphQL查询,我想将其作为原始请求执行,不想依赖任何客户端来执行此请求(我不想使用apollo client for android来执行它) 我已经创建了形成此查询的字符串,并尝试使用OkHttp客户端发出此请求,但我认为缺少一些内容,因为每次发送请求时,响应都是内部服务器错误。但是如果我使用apollo client for android执行这个查询,它会返回一个响应 下面是我使用OkHttp执行原始查询请求的尝试: val requestBodyString = " ci
val requestBodyString = " cities{\n" +
" name\n" +
" }"
fun makeRequest(url: String): Response{
val client = OkHttpClient()
val requestBody = RequestBody.create(null, requestBodyString)
val request = Request.Builder().url(url).post(requestBody)
.addHeader("content-type", "application/graphql").build()
return client.newCall(request).execute()
}
我跟随别人提出要求,但这对我不起作用。我不明白为什么 尝试以JSON格式发送
val query = " cities{\n" +
" name\n" +
" }"
fun makeRequest(url: String): Response{
val client = OkHttpClient()
val json = JSONObject()
json.put("query",query)
val requestBody = RequestBody.create(null, json.toString())
val request = Request.Builder().url(url).post(requestBody)
.addHeader("content-type", "application/json").build()
return client.newCall(request).execute()
}
我最近也在做类似的实验。我提出的解决方案是用一个编码的查询参数点击URL
stringurl=url+“查询?”+urlcoder.encode(查询)代码>
我成功地使用了OkHttp,但我注意到其他一些客户端无法与GraphQl通信
编辑:值得一提的是,我使用的URL是不安全的(http),我设置的唯一头是基本身份验证