我正在编写一个简单的应用程序,需要通过MySQL数据库验证登录详细信息。我特意不能使用PHP,所以我选择了WCF服务模型。现在,我让WCF通过我的浏览器工作。所有get方法都在我的浏览器中工作并返回所需的JSON输出,但为了良好的顺序,我将发布服务接口;
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getUserAuthenticated/{value1}/{value2}")]
bool GetUserAuthenticated(string value1, string value2);
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getIsUserModel/{value}")]
bool GetIsUserModel(string value);
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getIsUserActive/{value}")]
bool GetIsUserActive(string value);
如上所述,这是有效的。但是当我尝试从我的应用程序中使用服务时;
public void UserAuthenticated(String email, String password) {
try {
URL url = new URL("http://10.0.0.180:15021/Service1.svc/GetUserAuthenticated/" + email + "/" + password);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
Log.d("Response Code: ", "" + httpURLConnection.getResponseCode());
InputStream in = new BufferedInputStream(httpURLConnection.getInputStream());
String response = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
Log.d("Response String: ", response);
} catch (MalformedURLException mue) {
mue.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
我收到了java.io.FileNotFoundException。
02-08 04:44:53.015 7425-7457/com.testapp W/System.err: java.io.FileNotFoundException: http://10.0.0.180:15021/Service1.svc/GetUserAuthenticated/user/pass
02-08 04:44:53.015 7425-7457/com.testapp W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
02-08 04:44:53.015 7425-7457/com.testapp W/System.err: at com.testapp.LoginClass.UserAuthenticated(LoginClass.java:29)
02-08 04:44:53.015 7425-7457/com.testapp W/System.err: at com.test.WelcomeScreen$LoginAuthenticator.doInBackground(WelcomeScreen.java:103)
02-08 04:44:53.015 7425-7457/com.testapp W/System.err: at com.testapp.WelcomeScreen$LoginAuthenticator.doInBackground(WelcomeScreen.java:90)
02-08 04:44:53.015 7425-7457/com.testapp W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:288)
02-08 04:44:53.015 7425-7457/com.testapp W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-08 04:44:53.015 7425-7457/com.testapp W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
02-08 04:44:53.019 7425-7457/com.testapp W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-08 04:44:53.019 7425-7457/com.testapp W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-08 04:44:53.019 7425-7457/com.testapp W/System.err: at java.lang.Thread.run(Thread.java:841)
02-08 04:44:53.023 7425-7425/com.testapp W/EGL_genymotion: eglSurfaceAttrib not implemented
02-08 04:44:53.155 577-912/system_process W/InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@529adc88 attribute=null, token = android.os.BinderProxy@52b37f04
有人可以指点我这里正确的方向吗?我能够找到的所有示例都使用已弃用的HttpClient来处理WCF消耗,我不认为使用drepecated类来处理它是一种好习惯。
我有点迷失在这里,所以任何帮助都会受到很大关注!
编辑: 谷歌搜索了一下,让HttpURLConnection打印出它得到的响应代码。我从服务中得到400 BAD REQUEST。
EDIT2:
我创建了一个Azure站点来运行我的服务,暂时解决了我的问题。但是,我仍然对在本地主机上运行它时无法连接到服务的原因感兴趣。
答案 0 :(得分:0)
所以我解决了。我做的是;
https://developer.chrome.com/devtools/docs/remote-debugging
原来,我不得不移植设备。而现在它正在发挥作用。我现在可以通过我的工作站IP端口8008上的Genymotion模拟器连接到我的WCF服务。
我希望这有助于某人。
干杯。