How To Send Json Data To Post Restful Service
I want to call a rest webservice with POST method.Below is the service url and its parameters which I need to pass Rest Service: https://url/SSOServer/SSO.svc/RestService/Login J
Solution 1:
Use below class
publicclassRestClient
{
private ArrayList<NameValuePair> params;
private ArrayList<NameValuePair> headers;
private String url;
privateint responseCode;
private String message;
private String response;
public String getResponse()
{
return response;
}
public String getErrorMessage()
{
return message;
}
publicintgetResponseCode()
{
return responseCode;
}
publicRestClient(String url) {
this.url = url;
params = newArrayList<NameValuePair>();
headers = newArrayList<NameValuePair>();
}
publicvoidAddParam(String name, String value)
{
params.add(newBasicNameValuePair(name, value));
}
publicvoidAddHeader(String name, String value)
{
headers.add(newBasicNameValuePair(name, value));
}
publicvoidExecute(RequestMethod method)throws Exception
{
switch (method)
{
case GET:
{
// add parametersStringcombinedParams="";
if (!params.isEmpty())
{
combinedParams += "";
for (NameValuePair p : params)
{
StringparamString= p.getName() + "" + URLEncoder.encode(p.getValue(),"UTF-8");
if (combinedParams.length() > 1)
{
combinedParams += "&" + paramString;
}
else
{
combinedParams += paramString;
}
}
}
HttpGetrequest=newHttpGet(url + combinedParams);
// add headersfor (NameValuePair h : headers)
{
request.addHeader(h.getName(), h.getValue());
}
executeRequest(request, url);
break;
}
case POST:
{
HttpPostrequest=newHttpPost(url);
// add headersfor (NameValuePair h : headers)
{
request.addHeader(h.getName(), h.getValue());
}
if (!params.isEmpty())
{
request.setEntity(newUrlEncodedFormEntity(params, HTTP.UTF_8));
}
executeRequest(request, url);
break;
}
}
}
privatevoidexecuteRequest(HttpUriRequest request, String url)throws Exception
{
HttpParamshttpParameters=newBasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,15000);
HttpConnectionParams.setSoTimeout(httpParameters, 15000);
HttpClientclient=newDefaultHttpClient(httpParameters);
HttpResponse httpResponse;
httpResponse = client.execute(request);
responseCode = httpResponse.getStatusLine().getStatusCode();
message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntityentity= httpResponse.getEntity();
if (entity != null)
{
InputStreaminstream= entity.getContent();
response = convertStreamToString(instream);
// Closing the input stream will trigger connection release
instream.close();
}
}
privatestatic String convertStreamToString(InputStream is)
{
BufferedReaderreader=newBufferedReader(newInputStreamReader(is));
StringBuildersb=newStringBuilder();
Stringline=null;
try
{
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
return sb.toString();
}
public InputStream getInputStream(){
HttpParamshttpParameters=newBasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,15000);
HttpConnectionParams.setSoTimeout(httpParameters, 15000);
HttpClientclient=newDefaultHttpClient(httpParameters);
HttpResponse httpResponse;
try
{
HttpPostrequest=newHttpPost(url);
httpResponse = client.execute(request);
responseCode = httpResponse.getStatusLine().getStatusCode();
message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntityentity= httpResponse.getEntity();
if (entity != null)
{
InputStreaminstream= entity.getContent();
return instream;
/* response = convertStreamToString(instream);
// Closing the input stream will trigger connection release
instream.close();*/
}
}
catch (ClientProtocolException e)
{
client.getConnectionManager().shutdown();
e.printStackTrace();
}
catch (IOException e)
{
client.getConnectionManager().shutdown();
e.printStackTrace();
}
returnnull;
}
publicenumRequestMethod
{
GET,
POST
}
}
Here is the code how to use above class
RestClient client=newRestClient(Webservices.student_details);
JSONObject obj=newJSONObject();
obj.put("StudentId",preferences.getStudentId());
client.AddParam("",obj.toString());
client.Execute(RequestMethod.GET);
String response=client.getResponse();
Hope this will help you
Solution 2:
Q: how to add json data to this request?
A: Set your content type, length and write the payload.
Here's an example:
JSONObject holder = new JSONObject(); ... JSONObject data = new JSONObject(); ... // Some example name=value pairs while(iter.hasNext()) { Map.Entry pairs = (Map.Entry)iter.next(); String key = (String)pairs.getKey(); Map m = (Map)pairs.getValue(); JSONObject data = new JSONObject(); Iterator iter2 = m.entrySet().iterator(); while(iter2.hasNext()) { Map.Entry pairs2 = (Map.Entry)iter2.next(); data.put((String)pairs2.getKey(), (String)pairs2.getValue()); } holder.put(key, data); } ... StringEntity se = new StringEntity(holder.toString()); ... httpost.setHeader("Accept", "application/json"); httpost.setHeader("Content-type", "application/json"); ...
Post a Comment for "How To Send Json Data To Post Restful Service"