从Web服务检索URL以及如何连接到该URL

时间:2011-03-11 19:32:00

标签: blackberry

我是黑莓的新手。我正在做一项任务,我有一个网络服务,显示一些url.i需要检索它并连接到那个url.i尝试用两个线程一个是检索网址,其他是连接到webservice中的url,但它显示nullpointer exception.please帮助我。

谢谢。

1 个答案:

答案 0 :(得分:0)

由于您尚未发布任何代码,因此很难诊断出问题。但请看下面的代码,它试图打开一个绝对的URL。这可能会有所帮助。

对您的两个连接(Web服务和从Web Service返回的URL)使用此方法。一定要在单独的线程中调用此方法,否则会冻结UI。

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;
}