我想從Android應用程序發送數據到WCF服務,但不知何故服務似乎不是通過Android調用。我收到STATUSCODE值= 500通過adnroid在LOGCAT(這意味着內部服務器錯誤)我通過源代碼100次,但沒有找出錯誤。幾乎檢查了所有與我的問題有關的帖子,但仍然沒有得到任何解決方案。無法從Android發佈數據到WCF
這裏是THS CODE
的Android代碼:
private class sendPostData extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
HttpPost request = new HttpPost(LOGIN_SERVICE_URL + "/MyCar");
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
JSONStringer getCarInfo;
try {
getCarInfo = new JSONStringer()
.object()
.key("myCar")
.object()
.key("Name").value(edt_carName.getText().toString())
.key("Make").value(edt_carMake.getText().toString())
.key("Model").value(edt_carModel.getText().toString())
.endObject()
.endObject();
StringEntity entity = new StringEntity(getCarInfo.toString());
request.setEntity(entity);
// Send request to WCF service
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
Log.d("WebInvoke", "Saving : " + response.getStatusLine().getStatusCode());
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
txt_verif.setText("Success");
}
}
一切工作在Android的代碼,除了罰款調用WCF服務。我調試代碼幾次和接收的StatusCode = 500
這裏是WCF服務
Service.cs
public class Service1 : IService1
{
public void UpdateMyCar(myCar myCar) {
string strConnectionString = ConfigurationManager.ConnectionStrings["Database1"].ConnectionString;
SqlConnection conn = new SqlConnection(strConnectionString);
conn.Open();
using (SqlCommand cmd = new SqlCommand("Insert into TestingTable (Name,Make,Model) Values (@Name,@Make,@Model)", conn)) {
cmd.Parameters.AddWithValue("@Name", myCar.Name);
cmd.Parameters.AddWithValue("@Make", myCar.Make);
cmd.Parameters.AddWithValue("@Model", myCar.Model);
int queryResult = cmd.ExecuteNonQuery();
} conn.Close();
}
logcat的
WebInvoke Saving : 500
IService1.svc
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(
Method = "POST",
UriTemplate = "MyCar",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
void UpdateMyCar(myCar myCar);
}
[DataContract]
public class myCar
{
[DataMember(Name="Name")]
public string Name
{
get;
set;
}
[DataMember(Name="Model")]
public string Model
{
get;
set;
}
[DataMember(Name="Make")]
public string Make
{
get;
set;
}
的Web.Config
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true" targetFramework="4.0">
</compilation>
<authentication mode="Windows"/>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/></system.web>
<system.serviceModel>
<services>
<service name="CarSercive.Service1" behaviorConfiguration="CarSercive.Service1Behavior">
<!-- Service Endpoints -->
<endpoint address="" binding="webHttpBinding" contract="CarSercive.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CarSercive.Service1Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
此服務也IIS發佈。我也檢查了該服務與谷歌Chrome擴展簡單的休息客戶端並收到內部服務器錯誤
是什麼簡單的REST客戶端顯示爲響應主體? WCF會告訴你錯誤的細節,我們需要這些信息。 –
感謝您的回覆。我得到這個 http:// localhost:8259/Service1.svc/MyCar'無法在接收器處理,因爲EndpointDispatcher上的AddressFilter不匹配。檢查發件人和收件人的EndpointAddresses是否同意 –
@GregEnnis我在web.config文件中做了一些機會。我將** Binding =「webHttpBinding」更改爲「wsHttpBinding」**,以便** statuscode **更改爲** 415 ** –