所以我正在开发一个Android应用程序,它必须与我编码的API进行交互。目前我只是在本地运行API。我已经测试了所有的路线,它们都可以工作。
现在我想在我的Android应用程序上向这个API发送请求。为此,我使用一个类Request estManager
,它扩展了AsyncWG
来管理每个请求(如果你问的话,我可以给你看代码)。我已经添加了
当我使用电脑的IP地址通过
RequestManager
执行请求时,它会暂停一段时间,然后抛出SocketTimeoutException
,并出现以下错误:无法连接到/XX。XX。XX。XX(端口XXXX)来自/XX。XX。XX。XX(端口XXXX)
。请注意,从邮递员处发出相同的请求是没有问题的。
所以我尝试了多种方法,比如添加一个文件
network_security_config.xml
来允许带有我电脑的IP地址的流量,我停用了我的防火墙,我在防火墙上添加了几个入站和出站规则来授予Android Studio的权限,IP地址,使用的端口等...
有人经历过同样的情况吗,或者有人能帮我解决这个问题吗?我真的需要让它工作...
编辑:以下是RequestManager类:
class RequestManager extends AsyncTask<HashMap<String, Object>, Void, Response> {
protected Response doInBackground(HashMap<String, Object>... parameterMaps) {
Response response = null;
HashMap<String, Object> params = parameterMaps[0];
String method = (String) params.get("method");
if ("GET".equals(method)) {
response = doGet(params);
} else if ("POST".equals(method)) {
response = doPost(params);
} else if ("UPDATE".equals(method)) {
response = doUpdate(params);
} else if ("DELETE".equals(method)) {
response = doDelete(params);
}
return response;
}
private Response doGet(HashMap<String, Object> params) {
Response response = null;
try {
OkHttpClient client = new OkHttpClient();
Context context = (Context) params.get("context");
String protocol = Config.getConfigValue(context, "protocol");
String ipAddress = Config.getConfigValue(context, "ipAddress");
String port = Config.getConfigValue(context, "port");
String route = (String) params.get("route");
String url = protocol + ipAddress + ":" + port + "/" + route;
Request request = new Request.Builder()
.url(url)
.get()
.addHeader("Content-Type", "application/json")
.addHeader("Cache-Control", "no-cache")
.build();
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
private Response doPost(HashMap<String, Object> params) {
Response response = null;
try {
OkHttpClient client = new OkHttpClient();
Context context = (Context) params.get("context");
String protocol = Config.getConfigValue(context, "protocol");
String ipAddress = Config.getConfigValue(context, "ipAddress");
String port = Config.getConfigValue(context, "port");
String route = (String) params.get("route");
String url = protocol + ipAddress + ":" + port + "/" + route;
MediaType mediaType = MediaType.parse("application/json");
String bodyContent = params.get("body").toString();
RequestBody body = RequestBody.create(mediaType, bodyContent);
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Cache-Control", "no-cache")
.build();
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
private Response doUpdate(HashMap<String, Object> params) {
Response response = null;
try {
OkHttpClient client = new OkHttpClient();
Context context = (Context) params.get("context");
String protocol = Config.getConfigValue(context, "protocol");
String ipAddress = Config.getConfigValue(context, "ipAddress");
String port = Config.getConfigValue(context, "port");
String route = (String) params.get("route");
String url = protocol + ipAddress + ":" + port + "/" + route;
MediaType mediaType = MediaType.parse("application/json");
String bodyContent = params.get("body").toString();
RequestBody body = RequestBody.create(mediaType, bodyContent);
Request request = new Request.Builder()
.url(url)
.put(body)
.addHeader("Content-Type", "application/json")
.addHeader("Cache-Control", "no-cache")
.build();
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
private Response doDelete(HashMap<String, Object> params) {
Response response = null;
try {
OkHttpClient client = new OkHttpClient();
Context context = (Context) params.get("context");
String protocol = Config.getConfigValue(context, "protocol");
String ipAddress = Config.getConfigValue(context, "ipAddress");
String port = Config.getConfigValue(context, "port");
String route = (String) params.get("route");
String url = protocol + ipAddress + ":" + port + "/" + route;
Request request = new Request.Builder()
.url(url)
.delete()
.addHeader("Content-Type", "application/json")
.addHeader("Cache-Control", "no-cache")
.build();
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
protected void onPostExecute(Response response) {
}
}
我这样称呼它:
HashMap<String, Object> params = new HashMap<>();
JSONObject body = Utils.jsonify(content);
params.put("body", body);
params.put("route", Constants.User.BASE_USER);
params.put("context", SignUp.this);
params.put("method", "POST");
AsyncTask<HashMap<String, Object>, Void, Response> requestManager = new RequestManager().execute(params);
使用localtunnel临时公开本地api。这就像一个魅力,非常容易使用。已将其用于多个项目,以针对本地API进行测试。
我试图连接到一个名为的数据库。所有凭据都位于PHP文件名中,格式为 我正试图用这个连接到数据库 我得到这个错误: 注意:第6行的未定义变量:DB_HOST in/home/content/06/8274306/html/beta/mysuperscript.php 注意:未定义变量:第6行 /home/content/06/8274306/html/beta/mysuperscript.phpDB
问题内容: 我正在尝试使用PyMySQL连接到本地主机上的MySQL: 但是(在Python 2.7和Python 3.2上)我得到了错误: socket.error:[Errno 111]连接被拒绝 pymysql.err.OperationalError:(2003年,“无法连接到’localhost’(111)上的MySQL服务器”) 我确定mysqld正在运行,因为我可以使用command
我试图连接到mysql数据库从docker图像。然而,这是投掷错误。 下面是我正在使用的docker图像。https://hub.docker.com/_/mysql/ 下面是我用来运行docker映像的命令。 以下是命令的输出 如果我使用docker检查IP并ping该IP,则显示IP不可访问。 如果我尝试使用和我遇到以下错误。 无法加载身份验证插件“缓存\u sha2\u密码”。
null 我确信我已经在127.0.0.1:27017启动了数据库服务,并且可以用shell和非异步方法连接。错误: PrimaryServerSelector没有从群集描述中选择服务器ClusterDescription{type=unknown,connectionmode=single,all=[ServerDescription{address=localhost:27017,type=u
试图连接一个简单的JMX监控。托管应用程序和监控工具位于同一台服务器上。当试图连接一个错误 00:30:55610致命http-8080-6 SiteListener:makeJmxConnection:99-java.io。IOException:检索RMIServer存根失败:javax.naming。ServiceUnavailableException[根异常为java.rmi.Conne
我正在尝试使用rds部署带有MySQL引擎的rds实例。数据库子网组位于公用子网中。 我已执行以下检查:-允许安全组在端口3306上进行公共访问-在端口3306上的endpointURL上成功执行Telnet命令 配置如下: 日志记录详细信息: 正在尝试使用console连接到rds