Android无法将数据POST到WCF服务
本文关键字:WCF 服务 POST 数据 Android | 更新日期: 2023-09-27 18:16:18
我正在尝试使用WCF服务将数据POST到我的数据库,web服务似乎不工作,有人可以为我修复吗?
下面是我的代码:
WCF Service:
[ServiceContract]
public interface IAllocationService
{
[OperationContract]
[WebInvoke(
Method = "POST",
UriTemplate = "StrongestWifi",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
void UpdateStrongestWifi(myWifiClass myWifiClass);
}
[DataContract]
public class myWifiClass
{
[DataMember(Name = "Time")]
public string Time
{
get;
set;
}
[DataMember(Name = "SignalStrength")]
public string SignalStrength
{
get;
set;
}
[DataMember(Name = "SSID")]
public string SSID
{
get;
set;
}
** WCF Service .svc**
public void UpdateStrongestWifi(myWifiClass myWifiClass)
{
string strConnectionString = ConfigurationManager.ConnectionStrings["PCSDB"].ConnectionString;
SqlConnection conn = new SqlConnection(strConnectionString);
conn.Open();
using (SqlCommand cmd = new SqlCommand("Insert into TestingTable (Time,SignalStrength,SSID) Values (@Time,@SignalStrength,@SSID)", conn))
{
cmd.Parameters.AddWithValue("@Time", myWifiClass.Time);
cmd.Parameters.AddWithValue("@SignalStrength", int.Parse(myWifiClass.SignalStrength));
cmd.Parameters.AddWithValue("@SSID", myWifiClass.SSID);
int queryResult = cmd.ExecuteNonQuery();
}
conn.Close();
Android Code:
private class sendPostData extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
HttpPost request = new HttpPost(SERVICE_URI + "/StrongestWifi");
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
JSONStringer getWifiInfo;
try {
getWifiInfo = new JSONStringer()
.object()
.key("myWifiClass")
.object()
.key("Time").value("TIME")
.key("SignalStrength").value("Strength")
.key("SSID").value("ID")
.endObject()
.endObject();
StringEntity entity = new StringEntity(getWifiInfo.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) {
textDisplay.setText("Success");
}
}
日志猫:>06-01 21:02:20.150: D/WebInvoke(2832): Saving : 400
没关系,找到了解决方案,正在发送字符串格式的SignalStrength而不是int