Android フォンから REST を使用して、(ネットワーク内にある) サーバーの Web サービスにアクセスしようとしています。ルーターでは、外部からのすべてのクエリにアクセスできるように「ルーティング」を行いましたが、ルーターにはユーザーとパスワードがあります。
私の質問は、HTTP ポストまたは HTTP クライアントにコードを追加してルーターにアクセスする必要があるかどうかです。HttpHostConnectException: Connection to http://myipaddress:myport refused
いくつかのコードを試しましたが、うまくいきませんでした。
@Override
protected Void doInBackground(Object... params) {
kkk = ((Integer) params[2]);
parametros = params;
Log.i("SendOnlyOneFact", "Guardando datos de la actividad " + kkk);
Thread.currentThread().setName("NA_SendOnlyOneFact-" + kkk);
// Guardar los datos creados
getActividades().get(kkk).saveData((android.app.Activity) params[1]);
// Serializar los datos creados
String cosa_serializada = getActividades().get(kkk).getMeasure()
.serializeData(getActividades().get(kkk), (android.app.Activity) params[1]);
// Obtener el XML a partir de ese arraylist
// Enviarlo mediante REST
HttpHost targetHost = new HttpHost(((GateDefinition) params[0]).getServer(),
((GateDefinition) params[0]).getPort(), "http");
HttpPost httpPost = new HttpPost("http://" + ((GateDefinition) params[0]).getServer() + ":"
+ ((GateDefinition) params[0]).getPort() + "/" + ((GateDefinition) params[0])
.getWeb_service());
// Also be sure to tell the server what kind of content we are sending
httpPost.setHeader("content-type", "text/plain");
// Something like this, but this doesn't work :(
ArrayList<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("login", "1234"));
nvps.add(new BasicNameValuePair("password", "1234"));
try {
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF_8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
StringEntity entity = new StringEntity(cosa_serializada, "UTF-8");
entity.setContentType("text/plain");
httpPost.setEntity(entity);
// execute is a blocking call, it's best to call this code in a
// thread separate from the ui's
response = httpClient.execute(targetHost, httpPost);
} catch (SocketException ex) {
Log.e("SendOnlyOneFact", "No existe conexión con el servidor");
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
編集:データ接続でテストして動作しますが、wifiではこの例外が発生し、理由がわかりません!! :o