C# 在Android中使用WCF服务时出错
我试图使用WCF服务将数据发布到我的数据库,但似乎无法找出我的代码有什么问题,我尝试了不同的解决方案,但似乎都失败了。我是android开发新手,不知道如何调试。请帮帮我。。。C# 在Android中使用WCF服务时出错,c#,java,android,.net,wcf,C#,Java,Android,.net,Wcf,我试图使用WCF服务将数据发布到我的数据库,但似乎无法找出我的代码有什么问题,我尝试了不同的解决方案,但似乎都失败了。我是android开发新手,不知道如何调试。请帮帮我。。。 这是我的代码: [ServiceContract] public interface IAllocationService { [OperationContract] [WebInvoke( Method = "POST", UriTemplate = "Strongest
这是我的代码:
[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服务:
[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;
}
Android代码:
public void onGetWebService(View v)
{
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();
}
}
日志目录:
[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;
}
06-01 15:46:06.229:W/System.err(27711):android.os.NetworkOnMainThreadException
06-01 15:46:06.237:W/System.err(27711):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
06-01 15:46:06.237:W/System.err(27711):位于libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
06-01 15:46:06.237:W/System.err(27711):位于libcore.io.IoBridge.connectErrno(IoBridge.java:127)
06-01 15:46:06.237:W/System.err(27711):位于libcore.io.IoBridge.connect(IoBridge.java:112)
06-01 15:46:06.245:W/System.err(27711):位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
06-01 15:46:06.245:W/System.err(27711):位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
06-01 15:46:06.245:W/System.err(27711):位于java.net.Socket.connect(Socket.java:842)
06-01 15:46:06.245:W/System.err(27711):位于org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
06-01 15:46:06.245:W/System.err(27711):位于org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
06-01 15:46:06.253:W/System.err(27711):位于org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
06-01 15:46:06.253:W/System.err(27711):位于org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
06-01 15:46:06.253:W/System.err(27711):位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
06-01 15:46:06.253:W/System.err(27711):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
06-01 15:46:06.253:W/System.err(27711):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
06-01 15:46:06.253:W/System.err(27711):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
06-01 15:46:06.253:W/System.err(27711):位于com.example.pcsprojectnetworkcodes.MainActivity.onGetWebService(MainActivity.java:191)
06-01 15:46:06.253:W/System.err(27711):位于java.lang.reflect.Method.invokenactive(本机方法)
06-01 15:46:06.261:W/System.err(27711):位于java.lang.reflect.Method.invoke(Method.java:511)
06-01 15:46:06.261:W/System.err(27711):在android.view.view$1.onClick(view.java:3594)
06-01 15:46:06.261:W/System.err(27711):在android.view.view.performClick(view.java:4204)
06-01 15:46:06.261:W/System.err(27711):在android.view.view$PerformClick.run(view.java:17360)
06-01 15:46:06.261:W/System.err(27711):位于android.os.Handler.handleCallback(Handler.java:725)
06-01 15:46:06.261:W/System.err(27711):位于android.os.Handler.dispatchMessage(Handler.java:92)
06-01 15:46:06.269:W/System.err(27711):位于android.os.Looper.loop(Looper.java:137)
06-01 15:46:06.269:W/System.err(27711):位于android.app.ActivityThread.main(ActivityThread.java:5237)
06-01 15:46:06.276:W/System.err(27711):位于java.lang.reflect.Method.invokenactive(本机方法)
06-01 15:46:06.276:W/System.err(27711):位于java.lang.reflect.Method.invoke(Method.java:511)
06-01 15:46:06.276:W/System.err(27711):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
06-01 15:46:06.276:W/System.err(27711):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
06-01 15:46:06.284:W/System.err(27711):在dalvik.System.NativeStart.main(本机方法)
不要在主线程上进行网络调用,因为它可能会使应用程序崩溃。尝试调用此httpClient。在asyntask中执行(请求)或使用可运行线程。我尝试使用asyntask,但不太了解如何以及在何处使用它,您能给我一个headstart吗?谢谢只需使用Asynctask.call Asynctask.execute的doInbackground()mtd执行onGetWebService()功能即可。错误消失,但我面临另一个问题,谢谢!!