Jersey WebServer для тестирования Android-приложения - застрял в «Привет мире» - PullRequest
0 голосов
/ 22 марта 2011

Я разрабатываю приложение для Android, которое получает некоторые данные с веб-сервера, который я (или, скорее, кто-то еще) также создаю сам.Теперь, просто для тестирования, я хотел настроить простой веб-сервис на Джерси, к которому я могу получить доступ через httpGet.Чего я хочу добиться - это отправить какой-нибудь тестовый запрос и получить "тест!"Струна назад.Однако я никогда раньше не работал с веб-серверами, поэтому я чувствую себя немного потерянным.

Я последовал немецкому примеру "Hello World" (он должен показывать "Да" при вызовесайт localhost: 8080 / rest / сообщение из браузера).

Вот так выглядит мой код:

import java.io.IOException;
import java.net.InetAddress;

import javax.swing.JOptionPane;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.ext.Provider;

import com.sun.jersey.api.container.httpserver.HttpServerFactory;
import com.sun.net.httpserver.HttpServer;

@Path("test")
@Provider
public class Test
{
    private static InetAddress adress;

    public static void main(String[] args)
    {   
        try
        {
            publishSite();
        }
        catch (IllegalArgumentException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        System.out.println("Der WebServer wurde unter der Adresse \"http://" + adress.getHostAddress() + ":8080/test\" veröffentlicht.");
    }

    public static void publishSite() throws IllegalArgumentException, IOException
    {
        adress = InetAddress.getLocalHost();
        HttpServer server = HttpServerFactory.create("http://" + adress.getHostAddress() + ":8080/");
        server.start();

        JOptionPane.showMessageDialog( null, "Ende" );
        server.stop( 0 );
    }


}

(Здесь я получил несколько ошибок, говорящих "Ограничение доступа: тип HttpServer недоступен из-за ограничения на требуемую библиотеку C: \Программа \ Java \ jre6 \ lib \ rt.jar ", которую я заменил на предупреждения, следуя руководству другого сайта. Плохая идея?)

и, из приведенного выше примера:

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

@Path("message")
public class Message {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String message() {
        return "Yeah! ";
    }
}

Теперь, если я пытаюсь получить доступ к localhost: 8080 / test / message, я получаю пустую страницу.То же самое с localhost: 8080 / тест.НО, также то же самое с любым случайным URL, который я могу придумать, например localhost: 8080 / blblab - что мне кажется немного странным.

При попытке получить доступ к нему из моего приложения для Android я получаю ошибку 404 наlocalhost: 8080 / test / message и ошибка 405 на локальном хосте: 8080 / test.

Если это поможет, я также выложу код Android;но я уже тестировал его в Google и получил html-строку, поэтому думаю, что это не является причиной моей проблемы.

Надеюсь, вы можете помочь, а также, что мой вопрос не слишком глуп.:) Заранее спасибо!

PS: пожалуйста, добавьте "http://" ко всем указанным выше местным ссылкам, я не могу публиковать более 2 ссылок. ^^

1 Ответ

0 голосов
/ 22 марта 2011

Хорошо, это был глупый вопрос!^^ Все заработало, когда я посмотрел на localhost: 8080 / message вместо localhost: 8080 / test / message ...

Однако, если кто-нибудь знает, почему я не получаю ответ 404 в своем браузере,Я все еще рад за другой ответ!

Кроме того, с ошибкой «Ограничение доступа» я нашел простое решение здесь , в посте tgigiel.

...