Reputation: 1972
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
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