Как сделать запрос PUT, используя HttpURLConnection
с параметрами запроса?
Я пытаюсь использовать сторонний REST API, используя HttpURLConnection
, но когда я пытаюсь передать параметры в URL, онне работает и выдает ошибку, как показано ниже:
Не удалось найти URL REST API в реестре сопоставлений
Это блок кода, который не 'у меня не работает на данный момент:
URL url;
StringBuffer response = new StringBuffer();
try
{
url = new URL(" http://thirdparty.com/party/api/v2/ksp/12/ks");
HttpURLConnection httpURL = (HttpURLConnection) url.openConnection();
httpURL.setDoOutput(true);
httpURL.setRequestMethod("PUT");
StringBuilder sbUrl = new StringBuilder("parameter1_id=");
sbUrl.append(getParameter1Value())
.append("¶meter2_id=")
.append(getParameter2Value());
final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(httpURL.getOutputStream()));
writer.write(sbUrl.toString());
writer.flush();
writer.close();
// throw the exception here in case invocation of web service
if (httpURL.getResponseCode() != 200)
{
// throw exception
}
else
{
//SUCCESS
}
}
catch (IOException e)
{
}
Когда я предоставляю эти параметры в теле в качестве параметров form-data
, REST API, кажется, обеспечивает ответ.Мой вопрос здесь заключается в том, как мне сделать эту работу с HttpURLConnection?
Что я пробовал до сих пор?Я попытался изменить выше, чтобы что-то вроде ниже, но это не работает.
try
{
url = new URL(" http://thirdparty.com/party/api/v2/ksp/12/ks");
HttpURLConnection httpURL = (HttpURLConnection) url.openConnection();
httpURL.setDoOutput(true);
httpURL.setRequestMethod("PUT");
httpURL.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + "----WebKitFormBoundarydklhfklsdfhlksh");
dataOutputStream = new DataOutputStream(urlConnection.getOutputStream());
dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"parameter1_id\"");
dataOutputStream.writeBytes("\r\n" + "parameter1Value" +"\r\n");
dataOutputStream.writeBytes("--" + "----WebKitFormBoundarydklhfklsdfhlksh");
dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"parameter2_id\"");
dataOutputStream.writeBytes("\r\n" + "parameter2Value" + "\r\n");
dataOutputStream.writeBytes("--" + "----WebKitFormBoundarydklhfklsdfhlksh" + "--");
dataOutputStream.flush();
dataOutputStream.close();
urlConnection.connect();
// throw the exception here in case invocation of web service
if (httpURL.getResponseCode() != 200)
{
// throw exception
}
else
{
//SUCCESS
}
}
catch (IOException e)
{
}
EDIT : выдает ошибку с кодом ответа как 500
РЕДАКТИРОВАТЬ : просто чтобы уточнить, я не пытаюсь загрузить файл, но пытаюсь отправить параметры внутри ТЕЛА (например, параметры запроса вместо отправки в качестве параметров URL).
Любые указатели или предложения по этому вопросу очень ценятся.