Отправьте асинхронный пост-запрос с asynchttpclient как проект maven и запустите - PullRequest
0 голосов
/ 21 мая 2018

Я полностью схожу с ума здесь.Это первый раз, когда я использую Java, и все это мне очень страшно.

В любом случае, мне нужно создать небольшой проект Java Maven, в котором я слушаю определенный порт UDP (сценарий python atm, эмулирующийустройство, которое я должен использовать), а затем еще кое-что перед отправкой запроса на конкретный URL с двумя аргументами.

Я нашел эту библиотеку https://github.com/AsyncHttpClient/async-http-client, которая, кажется, получает хорошие отзывыи репутация.

Чего я достиг на данный момент?

  1. Мне удалось создать проект maven (очевидно)
  2. Написал класс получателя (работает отлично!) - Класс, который перехватывает UDP-сообщение и сохраняет все, что необходимо сохранить для последующего использования при отправке сообщения POST.
  3. Написал код, отвечающий за отправку сообщения POST с использованием библиотеки (я не уверен в этомработает, так как я не мог его запустить):
    // To make post request to send data
  AsyncHttpClient client = Dsl.asyncHttpClient();

  BoundRequestBuilder postRequest = client
          .preparePost("http://localhost:8080/my_custom_url/")
          .addFormParam("id", myid)
          .addFormParam("stream", inData);

  // Asynchronous execution
  postRequest.execute(new AsyncHandler<Object>() {
      public State onStatusReceived(HttpResponseStatus responseStatus) throws Exception {
          System.out.print("\nstatus received");
          return null;
      }

      public State onHeadersReceived(HttpHeaders headers) throws Exception {
          System.out.print("\nheaders received");
          return null;
      }

      public State onBodyPartReceived(HttpResponseBodyPart bodyPart) throws Exception {
          System.out.print("\nbody part received");
          return null;
      }

      public void onThrowable(Throwable t) {

      }

      public Object onCompleted() throws Exception {
          System.out.print("\nexecute completed");
          return null;
      }
  });

  // Close to stop memory leaks after we are done
  try {           client.close();         } catch (IOException e) {           infoBox("Could not close AsyncHttpClient.", "Error");
      System.exit(0);         }
Построил проект maven (изнутри eclipse), выполнив: pom.xml> Щелкните правой кнопкой мыши> Run As> Maven Build ...> Цель, заданная как «пакет»
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building MyProject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MyProject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\me\eclipse-workspace\MyProject\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ MyProject ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ MyProject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\me\eclipse-workspace\MyProject\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ MyProject ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ MyProject ---
[INFO] Surefire report directory: C:\Users\me\eclipse-workspace\MyProject\target\surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running me.company.MyProject.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ MyProject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.044 s
[INFO] Finished at: 2018-05-21T13:23:49+03:00
[INFO] Final Memory: 10M/245M
[INFO] ------------------------------------------------------------------------
Пробовал работать через powershell, выполняя следующие действия:
PS C:\Users\me\eclipse-workspace\MyProject\target> java -cp .\MyProject-0.0.1-SNAPSHOT.jar me.company.MyProject.App
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/asynchttpclient/AsyncHandler
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.privateGetMethodRecursive(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.asynchttpclient.AsyncHandler
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 7 more

Буду признателен за любую помощь по этому поводу.Рад предоставить больше информации, когда это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...