0

我在我的android後臺服務中遇到問題。雖然使用HTTP協議就說明ClientProtocolException發送數據從android發送數據到web api服務

我的WebAPI是

[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()); 
    } 

我有我的LocationDetails與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; } 
    } 

在我的Android後臺代碼I M使用HTTP協議類。我需要我的Web API服務進行通信,以插入

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; 

     }} 

其實我的jQuery代碼正常工作的DATAS和插入值

我的JavaScript代碼,請工作正常

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) 
      { 

      } 
     } 
    }); 
} 

幫助我找出我的Android後臺服務中的例外 請給出正確的代碼以與我的服務進行通信

預先感謝 ARUN

+0

喜@Arun你怎麼會在這裏解決您的問題,我想你的代碼,我也得到了同樣的錯誤了ClientProtocolException成爲空什麼是錯的可以請您幫助我如何將你的固定它的感謝 – NewDroidDev

回答

1

要發送的請求體爲application/X WWW的窗體-urlencoded但設定內容類型爲JSON。

而不是使用;

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

使用;

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

我已經改變了代碼但仍然給**客戶端協議異常**和**內部服務器錯誤**。你可以建議我在哪裏我應該更正我的代碼..在Android或我的Webapi服務 –

+0

我發現我的服務中的錯誤。先生,很多先生 –

相關問題