Android 对旋度的响应是从CircleCI上的gradle调用的空啤酒

Android 对旋度的响应是从CircleCI上的gradle调用的空啤酒,android,gradle,build.gradle,circleci,circleci-2.0,Android,Gradle,Build.gradle,Circleci,Circleci 2.0,我在gradle有一个任务,为android应用程序下载翻译 task('downloadTranslations') { ext.downloadPOTranslation = { stringsFile, projectId, lang -> def f = new File(stringsFile) if (f.exists()) { println("Delete file: " + f.absolutePath) f.del

我在gradle有一个任务,为android应用程序下载翻译

task('downloadTranslations') {
    ext.downloadPOTranslation = { stringsFile, projectId, lang ->
    def f = new File(stringsFile)
    if (f.exists()) {
        println("Delete file: " + f.absolutePath)
        f.delete()
    }

    println("Get lang: " + lang + " for project: " + projectId)

    def requestArray = ['curl', '-X', 'POST', "\"https://api.poeditor.com/v2/projects/export\"",
                   '-d', 'api_token=\"{API_KEY}\"',
                   '-d', 'id=\"' + projectId + '\"',
                   '-d', 'language=\"' + lang + '\"',
                   '-d', 'type=\"android_strings\"']

    println(requestArray)
    def request = requestArray.execute()

    request.waitFor()
    def response = request.text
    if (response.isEmpty()) {
        def errorResponse = request.err.text
        println("Error response from server:")
        println(errorResponse)
    } else {
        println("Response from server:")
        println(response)
    }

    ...

}

doLast {
    downloadPOTranslation("src/main/res/values/strings.xml", "projectNumber", "en-gb")
}
}

当我从CLI或Android Studio从本地计算机调用此任务时,一切正常:

Get lang: en-gb for project: 250751
[curl, -X, POST, "https://api.poeditor.com/v2/projects/export", -d, api_token="API_TOKEN", -d, id="250751", -d, language="en-gb", -d, type="android_strings"]
Response from server:
{"response":{"status":"success","code":"200","message":"OK"},"result":{"url":"https:\/\/api.poeditor.com\/v2\/download\/file\/FILENUMBER"}}
但当我在CircleCI上尝试完全相同的方法时,我得到了一个错误:

Get lang: en-gb for project: 250751
[curl, -X, POST, "https://api.poeditor.com/v2/projects/export", -d, api_token="API_TOKEN", -d, id="250751", -d, language="en-gb", -d, type="android_strings"]

FAILURE: Build failed with an exception.

* Where:
Build file '/home/circleci/code/app/build.gradle' line: 204

* What went wrong:
Execution failed for task ':app:downloadTranslations'.
> java.io.IOException: Stream closed
流关闭是因为
response.isEmpty()
true
request.err
已关闭

所以为什么Gradle可以从服务器获取一个空响应,而在本地工作?


我还尝试使用SSH循环CircleCI并直接从CLI运行curl-响应不是空的。

问题在于
之间的差异

我不知道为什么,
“curl”
可能被忽略了

所以

很好

    def requestArray = ["curl",
                        "-X", "POST",
                        "-d","api_token=API_KEY",
                        "-d", "id=" + projectId + "",
                        "-d", "language=" + lang + "",
                        "-d", "type=android_strings",
                        "https://api.poeditor.com/v2/projects/export",]