плохой запрос с HttpPut (или HttpPost) - PullRequest
2 голосов
/ 11 июля 2011

Я пытаюсь отправить PUT (или POST) на сервер, но все, что я получаю, это «400 неверных запросов». Посмотрев на сервер, запрос приходит к apache, но не переходит на рельсы. Я получаю эту ошибку:

[Mon Jul 11 12:30:52 2011] [error] [client 151.80.29.77] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23)

Если я отправляю GET-запросы, они все проходят как удовольствие. Это соответствующий кусок кода в моем приложении. Кто-нибудь замечает что-то не так?

InputStream in = null;

        HttpParams params = new BasicHttpParams( );
        HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1 );
        HttpProtocolParams.setContentCharset( params, HTTP.DEFAULT_CONTENT_CHARSET );
        HttpProtocolParams.setUseExpectContinue( params, true );

        SchemeRegistry schReg = new SchemeRegistry( );
        schReg.register( new Scheme( "http", PlainSocketFactory.getSocketFactory( ), 80 ) );
        schReg.register( new Scheme( "https", SSLSocketFactory.getSocketFactory( ), 443 ) );
        ClientConnectionManager conMgr = new ThreadSafeClientConnManager( params, schReg );
        httpClient = new DefaultHttpClient( conMgr, params );

        httpClient.setCookieStore( myCookieStore );
        HttpClientParams.setRedirecting( httpClient.getParams( ), true );
        HttpContext localContext = new BasicHttpContext( );
        HttpRequestBase request = null;

                request = new HttpPut( url );
                request.addHeader( "Host", my_domain );
                StringEntity sePut = new StringEntity( data );
                ( (HttpPut)request ).setEntity( sePut );

        HttpResponse response = httpClient.execute( request, localContext );
        StatusLine status = response.getStatusLine( );  <------- 400 Bad Request
...