gpt4 book ai didi

java - Redmine Java Api-org.json.JSONException:JSONObject文本必须在字符1处以'{'开头

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:54 25 4
gpt4 key购买 nike

当我尝试运行此代码时(“问题”示例取自此Web http://www.redmine.org/projects/redmine/wiki/Rest_api_with_java):

    RedmineManager redmineManager = new RedmineManager("http://something.cz", "somekey"); //I changed these two parameters for security reasons when paste here
System.out.println(redmineManager.getProjects().size()); //this works fine
Issue issueToCreate = new Issue();
issueToCreate.setSubject("This is the summary line 123");
Issue newIssue = redmineManager.createIssue("test-project", issueToCreate); //this line throws exception


它以此异常结束

Exception in thread "main" com.taskadapter.redmineapi.RedmineFormatException: org.json.JSONException: A JSONObject text must begin with '{' at character 1
at com.taskadapter.redmineapi.internal.Transport.parseResponse(Transport.java:456)
at com.taskadapter.redmineapi.internal.Transport.addObject(Transport.java:186)
at com.taskadapter.redmineapi.RedmineManager.createIssue(RedmineManager.java:135)
at javaapplication146.JavaApplication146.main(JavaApplication146.java:27)
Caused by: org.json.JSONException: A JSONObject text must begin with '{' at character 1
at org.json.JSONTokener.syntaxError(JSONTokener.java:410)
at org.json.JSONObject.<init>(JSONObject.java:179)
at org.json.JSONObject.<init>(JSONObject.java:402)
at com.taskadapter.redmineapi.internal.RedmineJSONParser.getResponseSingleObject(RedmineJSONParser.java:609)
at com.taskadapter.redmineapi.internal.Transport.parseResponse(Transport.java:454)
... 3 more
Java Result: 1


对于任何其他“获取某些对象”(有效)和“创建某些对象”(无效),行为相同。

我正在使用maven( http://mvnrepository.com/artifact/com.taskadapter/redmine-java-api)及其对版本1.23的依赖关系,但是我尝试了1.12.0,并且引发了相同的异常。

我们使用的是最新的redmine 2.5.1.stable,但是基于stacktrace,redmine Web和该redmine api之间的通信不会发生,因为在应用程序的“ parseRespone”部分抛出了异常。

最佳答案

不幸的是,根据与图书馆所有者的讨论,这个问题似乎仍然没有解决(或无法解决):

但是GET请求有效。对于UPDATE / CREATE,您可以使用如下所示的纯API。警告:禁用SSL是危险的,只能用于测试目的(例如“它是否还能工作?”)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import javax.net.ssl.*;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;

/**
*
* @author libik
*/
public class JavaApplication147 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
disableCertificateValidation();

URL url = new URL("https://redmine.***.cz/issues.xml");
HttpsURLConnection httpCon = (HttpsURLConnection) url.openConnection();
httpCon.setRequestProperty("X-Redmine-API-Key", "*****");
httpCon.setRequestProperty("Content-Type", "application/xml");
httpCon.setDoOutput(true);
httpCon.setRequestMethod("POST");
OutputStreamWriter out = new OutputStreamWriter(
httpCon.getOutputStream());
out.write("<?xml version=\"1.0\"?>\n" +
"<issue>\n" +
" <project_id>pan-unicorn-bot</project_id>\n" +
" <subject>Created from netbeans by name without priority</subject>\n" +
"</issue>");
out.close();

BufferedReader br = null;
StringBuilder sb = new StringBuilder();

String line;
try {

br = new BufferedReader(new InputStreamReader(httpCon.getInputStream()));
while ((line = br.readLine()) != null) {
sb.append(line);
}

} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

System.out.println(sb.toString());
}

public static void disableCertificateValidation() {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}

public void checkClientTrusted(X509Certificate[] certs, String authType) {
}

public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}};

// Ignore differences between given hostname and certificate hostname
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};

// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);
} catch (Exception e) {
}
}

}

关于java - Redmine Java Api-org.json.JSONException:JSONObject文本必须在字符1处以'{'开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23462271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com