Подключение от Android-клиента к сервлету - PullRequest
0 голосов
/ 15 мая 2018

Здравствуйте, у меня странная проблема с моим приложением.Я пытался подключить Android-клиент к сервлету, но при запуске приложения для Android я получаю FileNotFoundException.Я сделал веб-проект Java в Netbeans с несколькими контроллерами, когда я подключаюсь к первому создаваемому сервлету, все работает нормально, но когда я пытаюсь подключиться к другому сервлету, я получаю исключение.

Я используюэти два URL:

http://10.0.2.2:8080/HelloWordlServlet2/HelloWorld (это отлично работает, и это первый сервлет, который я создаю)

http://10.0.2.2:8080/HelloWordlServlet2/GetList (это не работает, я получаюFileNotFoundException, когда я пытаюсь установить соединение)

Я развертываю сервер перед использованием приложения для Android, я опубликую web.xml ниже, так что, возможно, проблема есть.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
    <servlet-name>HelloWorld</servlet-name>
    <servlet-class>Controller.HelloWorld</servlet-class>
</servlet>
<servlet>
    <servlet-name>GetList</servlet-name>
    <servlet-class>Controller.GetList</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloWorld</servlet-name>
    <url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>GetList</servlet-name>
    <url-pattern>/GetList</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
</web-app>

здеськод для активности

public class LoginPanel extends AppCompatActivity {
Button showListButton;
EditText showListText;
public String URL =
        "http://10.0.2.2:8080/HelloWordlServlet2/GetList";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_panel);
    findId();
    setOnClickListenerButton();

}

public void findId(){
    showListButton= (Button)findViewById(R.id.button_show_list);
    showListText= (EditText)findViewById(R.id.text_show_list);

}

public void setOnClickListenerButton(){
    showListButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getListConnection test = new getListConnection();
            test.execute(URL);
        }
    });

}

private class getListConnection extends AsyncTask<String,Void,String> {

    @Override
    protected String doInBackground(String... params) {
        StringBuffer output = new StringBuffer("ciao");

        try {
            java.net.URL url = new URL(URL); //Enter URL here
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            httpURLConnection.setRequestMethod("GET"); // here you are telling that it is a POST request, which can be changed into "PUT", "GET", "DELETE" etc.
            //httpURLConnection.setRequestProperty("Content-Type", "application/json"); // here you are setting the `Content-Type` for the data you are sending which is `application/json`
            httpURLConnection.connect();
            //if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream in = httpURLConnection.getInputStream();
                BufferedReader buffer = new BufferedReader(
                    new InputStreamReader(in));
                String s = "";
                while ((s = buffer.readLine()) != null)
                    output.append(s);
            //}
        }catch (MalformedURLException e){
            e.printStackTrace();

        }catch (IOException e){
            Log.d("errore","Non trovo il file");
            e.printStackTrace();

        }
        return output.toString();
    }
    protected void onPostExecute(String output) {
        showListText.setText(output);
    }
}
}

сервер, который я использую - это Glassfish, кто-нибудь может мне помочь?ты

это журнал ошибок

05-15 14:12:19.754 20338-20367/com.example.luchino.simplehttpgetservlet D/NetworkSecurityConfig: No Network Security Config specified, using platform default
05-15 14:12:19.878 20338-20367/com.example.luchino.simplehttpgetservlet D/errore: Non trovo il file
05-15 14:12:19.878 20338-20367/com.example.luchino.simplehttpgetservlet W/System.err: java.io.FileNotFoundException: http://10.0.2.2:8080/HelloWordlServlet2/GetList
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250)
    at com.example.luchino.simplehttpgetservlet.LoginPanel$getListConnection.doInBackground(LoginPanel.java:68)
    at com.example.luchino.simplehttpgetservlet.LoginPanel$getListConnection.doInBackground(LoginPanel.java:53)
    at android.os.AsyncTask$2.call(AsyncTask.java:304)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
05-15 14:12:19.879 20338-20367/com.example.luchino.simplehttpgetservlet W/System.err:     at  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:761)
...