Manish
Manish

Reputation: 1972

Making File upload request not working using HttpPut

I am using this code to make file upload request to server (PHP at backend),

public String makeFilePutUploadRequest(String url,File file,List<BasicNameValuePair> basicNameValuePairs) throws ClientProtocolException, IOException {
    String responseString = null;

        HttpPut httput = new HttpPut(url);
        MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
        //
        if (basicNameValuePairs.size() > 0) {
            for (BasicNameValuePair nameValuePair : basicNameValuePairs) {
                multipartEntityBuilder.addTextBody(nameValuePair.getName(), nameValuePair.getValue());
            }
        }
        // file
        multipartEntityBuilder.addPart("upfile", new FileBody(file));
        httput.setEntity(multipartEntityBuilder.build());
        HttpResponse response = httpClient.execute(httput);
        responseString = EntityUtils.toString(response.getEntity());

    //      Log.i(LOG_TAG, "response string recieved::" + responseString);
    return responseString;
}

but at server side request is received but parameters are not set.

I am using Laravel 4.1 at backend to process this request and if I use to get values using Input::get('param') I am getting null. And Input::hasFile('upfile') returns false

Upvotes: 0

Views: 171

Answers (1)

Sergey Neskoromny
Sergey Neskoromny

Reputation: 1208

To send params with PUT method I do this:

    HttpPut httput = new HttpPut();


    StringBuffer params = new StringBuffer();
    for (BasicNameValuePair nameValuePair : basicNameValuePairs) {
        params.append(nameValuePair.getName())
              .append("=")
              .append(nameValuePair.getValue())
              .append("&");
    }

    StringBuffer urlWithParams = new StringBuffer(ServiceURL);
    urlWithParams.append("?").append(params.toString().substring(0,params.length()-1));

    httput.setURI(URI.create(urlWithParams.toString()));
    httput.addHeader("Content-Type", "application/json"); 

...

Upvotes: 1

Related Questions