Извлечение URL из веб-сервиса и как подключиться к этому URL - PullRequest
0 голосов
/ 11 марта 2011

Я новичок в Black Berry. Я выполняю одну задачу, у меня есть один веб-сервис, чтобы показать какой-то URL-адрес. Мне нужно извлечь его и подключиться к этому URL-адресу. Я пробовал два потока, один - получить URL-адрес, а другой -подключиться к URL, который находится в веб-сервисе, но показывает исключение nullpointer. пожалуйста, помогите мне.

Спасибо.

1 Ответ

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

, так как вы не опубликовали код, диагностировать проблему очень сложно. Но посмотрите на следующий код, который пытается открыть абсолютный URL. Это может быть полезно.

Используйте этот метод для обоих подключений (веб-служба и URL-адрес, возвращенные из веб-службы). Обязательно вызовите этот метод в отдельном потоке, иначе он заморозит пользовательский интерфейс.

public static ResponseBean sendRequestAndReceiveResponse(
String method, String absoluteURL, String bodyData, boolean readResponseBody) 
    throws IOException
{
        ResponseBean responseBean = new ResponseBean();
        HttpConnection httpConnection = null;
try
{
    String formattedURL = absoluteURL + "deviceside=true;interface=wifi"; // If you are using WiFi
    //String formattedURL = absoluteURL + "deviceside=false"; // If you are using BES
    //String formattedURL = absoluteURL + "deviceside=true"; // If you are using TCP

    if(DeviceInfo.isSimulator()) // if simulator is running
        formattedURL = absoluteURL;

    httpConnection = (HttpConnection) Connector.open(formattedURL);

    httpConnection.setRequestMethod(method);

    if (bodyData != null && bodyData.length() > 0)
    {                               
        OutputStream os = httpConnection.openOutputStream();
        os.write(bodyData.getBytes("UTF-8"));
    }           

    int responseCode = httpConnection.getResponseCode();
    responseBean.setResponseCode(responseCode);

    if (readResponseBody)
    {
        responseBean.setBodyData(readBodyData(httpConnection));
    }
}
catch (IOException ex)
{                       
    System.out.println("!!!!!!!!!!!!!!! IOException in NetworkUtil::sendRequestAndReceiveResponse(): " + ex);
    throw ex;
}
catch(Exception ex)
{                       
    System.out.println("!!!!!!!!!!!!!!! Exception in NetworkUtil::sendRequestAndReceiveResponse(): " + ex);
    throw new IOException(ex.toString());
}
finally
{
    if (httpConnection != null)
        httpConnection.close();
}

return responseBean;
}

public static StringBuffer readBodyData(HttpConnection httpConnection) throws UnsupportedEncodingException, IOException
{   
    if(httpConnection == null)
        return null;
StringBuffer bodyData = new StringBuffer(256);                          
InputStream inputStream = httpConnection.openDataInputStream();

byte[] data = new byte[256];
int len = 0;
int size = 0;

while ( -1 != (len = inputStream.read(data)) )
{
    bodyData.append(new String(data, 0, len,"UTF-8"));
    size += len;
}

if (inputStream != null)
{
    inputStream.close();            
}

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