简体   繁体   中英

Send data from android to web api service

I have a problem in my android Background service. While send the data using http protocol it shows ClientProtocolException

My WebAPI is

  [AcceptVerbs("GET", "POST")]
  [ActionName("InsertLocationDetails")]
     public string InsertLocationDetails([FromBody]LocationDetails locDetails )
       {
        return objLocationService.InsertLocationDetails(locDetails.UserId,locDetails.DateTime.ToString(),
        locDetails.Latitude,locDetails.Longitude,locDetails.Status.ToString(),locDetails.Location.ToString());
   }

I have my LocationDetails class with paramaters

    public class LocationDetails
       {
        public int UserId { get; set; }
        public Double Latitude { get; set; }
        public Double Longitude { get; set; }
        public string Status { get; set; }
        public string DateTime { get; set; }
        public string Location { get; set; }
    }

In my Android background code im using http protocol. I need to communicate with my web api service to insert the datas

 public String insertLocationDetails(int userid,String newtime,String status,double latitude,double longitude,String address,String city,String country) 
{       
    HostUrl="http://URL/ServiceName/InsertLocationDetails"; 

     HttpClient httpClient = new DefaultHttpClient();
     HttpPost httpPost = new HttpPost(HostUrl);

    try
    {  
      List<NameValuePair> params = new LinkedList<NameValuePair>();

      params.add(new BasicNameValuePair("UserId",String.valueOf(userid)));
      params.add(new BasicNameValuePair("DateTime", newtime));
      params.add(new BasicNameValuePair("Latitude",String.valueOf(latitude)));
      params.add(new BasicNameValuePair("Longitude",String.valueOf(longitude)));
      params.add(new BasicNameValuePair("Status",status));
      params.add(new BasicNameValuePair("Location",(address+","+city+","+country)));

      httpPost.setHeader("Content-Type", "application/json");
      httpPost.setHeader("Accept", "application/json");

      HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
      httpPost.setEntity(entity);

      ResponseHandler<String> handler = new BasicResponseHandler();
      result =httpClient.execute(httpPost,handler);


                        }
            catch (ClientProtocolException e)
            {  
                e.printStackTrace();
                Log.e(TAG, "ClientProtocolException in callWebService(). " + e.getMessage());
            }
            catch (IOException e)
            {  
                e.printStackTrace();
                Log.e(TAG, "IOException in callWebService(). " + e.getMessage());
            }

  return result;

        }}

Actually my jquery code is working properly and inserting values

My Javascript code is working properly

function insertLocationDetails()
{
    var url=serverUrl();

    var urlpath={
            UserId : userid,
            DateTime : datetime, 
            Latitude: latitude,
            Longitude : longitude, 
            Status: status,
            Location : address };

    $.ajax
    ({
        cache: false,
        async: true,
        type: "POST",
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        url: url +"InsertLocationDetails",
        data: JSON.stringify(urlpath),
        success: function (result) 
        {
            var result = eval(result);
            for (var property in result) 
            {

            }
        }
    });
}

Kindly help me figure out the Exception in my Android Background service please give a correct code to make communication with my service

Thanks in advance ARUN

You are sending the request body as application/x-www-form-urlencoded but setting content type as JSON.

Instead of using;

`httpPost.setHeader("Content-Type", "application/json");`

use;

`httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");`

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM