Символы в контенте принимаются сервером, как показано ниже. Когда я запускаю один и тот же код на Mac OSX, он идет, как и ожидалось, но когда та же программа запускается на компьютере с Windows, я получаю такое поведение, нет проблем с кодом сервера, потому что когда я вызываю этот API из Почтальона и передаю эти символы, то они правильно принимаются сервером. Похоже, у GsonBuilder есть проблемы с обработкой неанглийских символов. Я сталкиваюсь с этой проблемой и с несколькими другими языками.
Εισιτή? Ια
private String content = "Εισιτήρια";
public String post(String targetEnvironment) throws IOException{
String gson = new GsonBuilder().disableHtmlEscaping().excludeFieldsWithModifiers(java.lang.reflect.Modifier.TRANSIENT).setLenient().create().toJson(this).toString();
System.out.println(gson);
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, gson);
Request request = new Request.Builder()
.url(targetEnvironment)
.post(body)
.addHeader("content-type", "application/json; charset=utf-8")
.addHeader("accept", "application/json")
.addHeader("client_application_id", "1")
.addHeader("x-requested-with", "1")
.addHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5)")
.addHeader("accept-encoding", "gzip,deflate,br")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
String response_string = response.body().string();
System.out.println(response_string);
}