Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Android 使用OkHttp客户端执行原始graphQL查询_Android_Kotlin_Graphql_Apollo Client - Fatal编程技术网

Android 使用OkHttp客户端执行原始graphQL查询

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

我有一个graphQL查询,我想将其作为原始请求执行,不想依赖任何客户端来执行此请求(我不想使用apollo client for android来执行它)

我已经创建了形成此查询的字符串,并尝试使用OkHttp客户端发出此请求,但我认为缺少一些内容,因为每次发送请求时,响应都是内部服务器错误。但是如果我使用apollo client for android执行这个查询,它会返回一个响应

下面是我使用OkHttp执行原始查询请求的尝试:

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),我设置的唯一头是基本身份验证