Я разработал приложение для Android (должно быть клиентом) и разработал Java-код (должен быть сервером), теперь я хочу подключить клиент к серверу.Когда он отправляет некоторые данные (строку, число, изображение) на сервер, сервер затем получает эти данные и выполняет некоторые процессы и обновляет базу данных (сервер SQL), а затем возвращает обратную связь клиенту, если процесс был успешно выполнен или нет.
Я пробую простой код для проверки соединения.
Я использовал Netbeans для создания проекта "Веб-приложение", затем создал новый файл сервлета в этом проекте, который содержит код ниже:
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String num1 = request.getParameter("num1");
String num2 = request.getParameter("num2");
if (num1 != null && num2 != null){
int number1 = Integer.parseInt(num1);
int number2 = Integer.parseInt(num2);
int sum = number1 + number2;
out.print("Your total is: " + sum);
}
else {
out.print("Please enter two numbers.");
}
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
И когда я запускаю только этот файл, я получаю: Ваша общая сумма: 14
и URL-адрес: http://localhost:48342/clientServerTest/servletTest?num1=12&num2=2
(в Eclipse) (клиент) код приложения для Android:
public class AndroidAdditionClientActivity extends Activity {
//int sum;
Button submit;
EditText firstnum, secondnum; // Inputed by the user
TextView total;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
submit = (Button) findViewById(R.id.bSubmit);
firstnum = (EditText) findViewById(R.id.etFirst);
secondnum = (EditText) findViewById(R.id.etSecond);
total = (TextView) findViewById(R.id.tvSum);
submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String numOne = firstnum.getText().toString().trim();
int num1 = Integer.parseInt(numOne);
String numTwo = secondnum.getText().toString().trim();
int num2 = Integer.parseInt(numTwo);
if (firstnum.getText() != null && secondnum.getText() != null) {
BufferedReader reader = null;
URL url;
try {
url = new URL("http://localhost:48342/clientServerTest/servletTest?num1=" + num1 + "&num2=" + num2);
URLConnection con;
con = url.openConnection();
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String line;
try {
while ((line = reader.readLine()) != null) {
total.append(line + "\n");
if (reader != null) {
reader.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
}
XML-файл для приложения:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvFirst"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="First number:"
android:textSize="20dp" />
<EditText
android:id="@+id/etFirst"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
<TextView
android:id="@+id/tvSecond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="Second number:"
android:textSize="20dp" />
<EditText
android:id="@+id/etSecond"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
<Button
android:id="@+id/bSubmit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Submit" />
<TextView
android:id="@+id/tvSum"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:layout_weight="0.86"/>
По-видимому, в NetbeansUI не показывает, я не знаю почему!Но я разработал его на Eclipse и импортировал в Netbeans.И при запуске эмулятор работает, но дает мне исключение, даже не просматривает приложение!
Если с тем, что я сделал, есть ошибки, я был бы очень признателен за вашу помощь.
Извините, если мой вопрос слишком длинный, я только начал изучать разработку для Android.
Спасибо.
Редактировать:
После запуска проекта я попал вВкладка для разработки Android, это:
Пакет AndroidAdditionClient-debug.apk развернут. Начальная активность com.arwa.androidaddition.AndroidAdditionClientActivity на эмуляторе устройства-5554 ActivityManager: Запуск: Intent {act = android.intent.action.MAIN cat =[android.intent.category.LAUNCHER] cmp = com.arwa.androidaddition / .AndroidAdditionClientActivity}
А на вкладке AndroidAdditionClient (отладка) это:
Создание выходных каталогов, если необходимо ..Сбор информации для AndroidAdditionClient ... Инструменты Android SDK, редакция 17 Цель проекта: Android 2.2
Уровень API: 8
ResolЗависимости библиотеки ving: нет библиотечных зависимостей.
API <= 15: Добавление annotations.jar в путь к классам. </p>
------------------
Обработка файлов помощи ...
Нет файлов AIDL для компиляции.
Обработка файлов RenderScript ...
Нет файлов RenderScript дляcompile.
Обработка ресурсов ... Найден удаленный целевой файл
Создание идентификаторов ресурсов ...
Обработка класса BuildConfig ... Нет необходимости создавать новый BuildConfig.Компиляция 1 исходного файла в C: \ Users \ Al Manarah \ Documents \ NetBeansProjects \ AndroidAdditionClient \ bin \ classes Найдено удаленный целевой файл Преобразование скомпилированных файлов и внешних библиотек в C: \ Users \ Al Manarah \ Documents \ NetBeansProjects \ AndroidAdditionClient \ bin \ classes.dex ... Хруст PNG-файлов в исходном каталоге: C: \ Users \ Al Manarah \ Documents \ NetBeansProjects \ AndroidAdditionClient \ res В целевой каталог: C: \ Users \ Al Manarah \ Documents \ NetBeansProjects \ AndroidAdditionClient \ bin \ res Crunched 0PNG-файлы для обновления кэша. Найденный удаленный целевой файл. Создание полного пакета ресурсов ... Найденный удаленный целевой файл. Создание AndroidAdditionClient-debug-unaligned.apk и его подписание с помощью ключа отладки ... Запуск zip align на конечном apk ... Отладочный пакет:C: \ Users \ Al Manarah \ Documents \ NetBeansProjects \ AndroidAdditionClient \ bin \ AndroidAdditionClient-debug.apk Обновление файла свойств: C: \ Users \ Al Manarah \ Documents \ NetBeansProjects \ AndroidAdditionClient \ bin \ build.prop Обновление файла свойств: C:\ Users \ Al Manarah \ Documents \ NetBeansProjects \ AndroidAdditionClient \ bin \ build.prop Обновление файла свойств: C: \ Users \ Al Manarah \ Documents \ NetBeansProjects \ AndroidAdditionClient \ bin \ build.prop Обновление файла свойств: C: \ Users \ Al Manarah \ Documents \ NetBeansProjects \AndroidAdditionClient \ bin \ build.prop debug: BUILD SUCCESSFUL (общее время: 6 секунд)
Эмулятор не показывает мне мое приложение, которое я сделал, оно показывает следующее исключение: «Приложение AdditionC (имя пакета) неожиданно остановилось. Пожалуйста, попробуйте снова».Он даже не открывает приложение.И вывод в Netbeans не показывает проблемы!