Не работает PUT запрос

Ответить
Xemii
Сообщения: 7
Зарегистрирован: 17 сен 2013, 18:53

Не работает PUT запрос

Сообщение Xemii » 12 окт 2014, 10:06

Нужно произвести PUT запрос к сайту, но сайт возвращает ошибку. При этом если выполнять запрос с компьютера то все выполняется.
Ошибка воспроизводится с компьютера только если посылать POST запрос.
При этом GET запросы работают нормально
Собственно сам вопрос, действительно ли android посылает PUT, а не пост запрос? Может нужны какие-нибудь дополнительные заголовки?
Пробовал и HttpURLConnection и DefaultHttpClient.

Код: Выделить всё

public static JSON createFromNet(String url, String method, String params){
		String json = "{}";
		try{
			DefaultHttpClient httpClient = new DefaultHttpClient();
			HttpUriRequest httpRequest = null;
			if (method == "GET"){
				httpRequest = JSON.getGetRequest(url);
			}
			if (method == "PUT"){
				httpRequest = JSON.getPutRequest(url, params);	
			}
			if (httpRequest == null){ 
				throw new Exception();
			}
        
			HttpResponse httpResponse = httpClient.execute(httpRequest);
			HttpEntity httpEntity = httpResponse.getEntity();
			InputStream is = httpEntity.getContent();
			
			BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();  
		}catch (UnsupportedEncodingException e) {
        }catch (ClientProtocolException e) {
        }catch (IOException e) { 
        }catch (Exception e) { 
        }
		
		return new JSON(json);
	}

protected static HttpUriRequest getPutRequest(String url, String params) throws UnsupportedEncodingException{
		StringEntity input = new StringEntity(params);
		input.setContentType("application/json");
		input.setContentEncoding("UTF-8");
		
		HttpPut request = new HttpPut(url);
		request.setEntity(input);
		
		
		return request;
	}
	
	protected static HttpUriRequest getGetRequest(String url){
		return new HttpGet(url);
	}

Аватара пользователя
Leeroy
Сообщения: 67
Зарегистрирован: 12 дек 2013, 21:25

Re: Не работает PUT запрос

Сообщение Leeroy » 12 окт 2014, 18:19

HttpUrlConnection connection = null;
try{
connection = получить конекшен;
connection.setRequestMethod("PUT");

......}
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма

Xemii
Сообщения: 7
Зарегистрирован: 17 сен 2013, 18:53

Re: Не работает PUT запрос

Сообщение Xemii » 12 окт 2014, 21:24

Leeroy, спасибо за ответ.

Я делал через HttpUrlConnection как Вы привели в примере.
От сервера все равно приходит ответ, как будто ему послали POST запрос, а не PUT.

Xemii
Сообщения: 7
Зарегистрирован: 17 сен 2013, 18:53

Re: Не работает PUT запрос

Сообщение Xemii » 13 окт 2014, 08:14

Проблема решена. На сервере был редирект на другую страницу.

Ответить