Я борюсь с некоторым кодом Java, который отлично работает при правильном выполнении на моем локальном хосте, но с ошибкой HTTP 406 при выполнении через мой веб-сервер не работает. Я попытался прочитать 406 кодов ошибок, но, я зациклился на том, что код работает нормально локально. Цель кода - отправить запрос на веб-сервер через HTTP для выполнения PHP-программы на задней панели. В запросе HTTP нет параметров. Программа PHP извлекает некоторые данные из базы данных SQL и возвращает ее в программу Java через JSON. Все это прекрасно работает при локальном запуске (например, через «localhost»). Вот последняя колдовство кода ...Java для PHP - возвращает JSON, но получает ответ HTTP 406
// preparation
String charset = "UTF-8";
String szURL = new String();
int responseCode = 0;
if (!debugConfiguration)
szURL = "https://secure.justhost.com/xxxx.php"; // removed actual file name
else
szURL = "http://localhost/xxxx.php"; // removed actual file name
// HTTP Post request
URL object = null;
try
{
object = new URL(szURL);
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//xxxHttpsURLConnection con = null;
HttpURLConnection con = null;
try
{
//xxxcon = (HttpsURLConnection) object.openConnection();
con = (HttpURLConnection) object.openConnection();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//add request header
try
{
//xxxcon.setRequestMethod("POST");
con.setRequestMethod("GET");
}
catch (ProtocolException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//con.setRequestProperty("Accept-Charset", charset);
//con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
//con.setRequestProperty("User-Agent", USER_AGENT);
//con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
// Send post request
con.setDoOutput(true);
DataOutputStream wr = null;
try
{
wr = new DataOutputStream (con.getOutputStream());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
wr.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
responseCode = con.getResponseCode();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader in = null;
try
{
in = new BufferedReader(new InputStreamReader(con.getInputStream()));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
String inputLine;
StringBuffer response = new StringBuffer();
try
{
while ((inputLine = in.readLine()) != null)
{
response.append(inputLine);
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
in.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Gson gson = new Gson();
jsonArticleCategories[] enums = gson.fromJson(response.toString(), jsonArticleCategories[].class);
for (int i=0; i<enums.length; ++i)
{
jsonArticleCategories jac = enums[i];
cats.add(jac.get_category());
}
Как видно из кода, я попытался несколько вариаций параметров и т.д. Я, вероятно, отсутствует что-то очень простой, но я просто не видя этого. Возможно, я слишком долго смотрел на код. Я был бы очень признателен, если бы кто-то мог указать на мои недостатки. Заранее спасибо.
Вы уверены, что живой сервер отправляет обратно тип контента 'application/json', а также действительный JSON? –
406 указывает, что сервер считает запрос неприемлемым по какой-либо причине. Было бы интересно посмотреть, что на самом деле надвигается на провод. Btw: запрос 'GET' с заголовком' Content-Type' немного странный ... Возможно, вы не должны безоговорочно устанавливать этот заголовок? – DaSourcerer
@ExplosionPills - Ну, я не уверен. Я забыл упомянуть, что когда я запускаю PHP-код на сервере, набрав тот же URL-адрес, что и в java-коде, он работает правильно. Я вижу запрашиваемые поля json, возвращенные на веб-странице. – rrirower