.getResponseCode () зависает при попытке подключить java (проект blackberry) к веб-сервису - PullRequest
1 голос
/ 10 июня 2011

Я пытаюсь подключиться к веб-сервису из моего проекта blackberry в eclipse. Мой код для URLConnector следующий

import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import net.rim.device.api.ui.component.Dialog;


public class URLConnector 
{
HttpConnection con = null; 
InputStream is = null; 

public URLConnector()   {
    try 
    {
    Dialog.inform("1"); 
    String url = new String("https://webserviceBlahBlah");

    Dialog.inform(con.toString()); 
        int responseCode = con.getResponseCode(); 
        Dialog.inform("3"); 
        if (responseCode != HttpConnection.HTTP_OK) { 
            Dialog.inform("3.5"); 
            System.out.println(responseCode); 
        } 
        is = con.openInputStream(); 
        byte[] responseData = new byte[10000]; 
        int length = 0; 
        Dialog.inform("4"); 
        StringBuffer rawResponse = new StringBuffer(); 
        while (-1 != (length = is.read(responseData))) { 
            Dialog.inform("5"); 
            rawResponse.append(new String(responseData, 0, length)); 
        } 
        final String result = rawResponse.toString(); 
        System.out.println(result); 
        Dialog.inform("6"); 
    } 
    catch (Exception ex) 
    { 
        Dialog.inform("ex.getMessage()"); 
        System.out.println(ex.getMessage()); 
    } 
    finally 
    { 
        try { 
            is.close(); 
            is = null; 
            con.close(); 
            con = null; 
            Dialog.inform("8"); 
        } 
        catch(Exception e){
            Dialog.inform("e"); 
        } 
    } 
}

Приложение зависает при вызове con.getReponse (). Он работает на симуляторе Blackberry 9800. Любая помощь будет очень признательна, потому что я очень застрял

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

getResponseCode () не должен вызывать его зависание, поскольку он просто читает ответ, полученный после подключения.Я думаю, что это на самом деле попытка соединения, которая висит.Если вы разрабатываете версию 5.0 или выше, взгляните на класс ConnectionFactory , чтобы убедиться, что ваше соединение создается правильно.

0 голосов
/ 17 августа 2011

Может быть, попробуйте добавить; deviceside = true в самом конце URL?Помогло в моем случае.

0 голосов
/ 10 июня 2011

Джеймс, я полагаю, что после того, как вы включили MDS Simulator, вы обнаружили, что у вас тоже была проблема, потому что вы никогда не открывали соединение?

    HttpConnection con = null;
    InputStream is = null;
    try {
        System.out.println("1");
        String url = new String("http://myserver.com/index.html");

        //I added these two lines to your code and tested it with my own server and got a 200 RC.
        net.rim.device.api.io.transport.ConnectionFactory cf = new net.rim.device.api.io.transport.ConnectionFactory();
        con = (HttpConnection)cf.getConnection(url).getConnection();

        System.out.println(con.toString());
        int responseCode = con.getResponseCode();
        System.out.println("3 responseCode = " + responseCode);
        if (responseCode != HttpConnection.HTTP_OK) {
            System.out.println("3.5");
            System.out.println(responseCode);
        }

Также, если вам нужна поддержка BBJava 5.0 минус, вы можете взглянуть на: http://www.versatilemonkey.com/HttpConnectionFactory.java.Это не префект, но это хорошее место, чтобы начать с создания соединений для платформ до 5.0.

...