Http呼叫崩溃

时间:2014-09-20 12:29:37

标签: java blackberry

当我打电话给http时,在连接期间,我的应用程序崩溃了..我怎么能在这段代码中处理这样的问题?

当没有连接时,也会发生这种情况,http被调用..当我返回错误的格式(而不是json)时也会发生..

HttpConnection conn = null;
OutputStream os = null;
InputStream is = null;
try {

    // construct the URL
    String serverURL = "xxxxxxxxxxxxxxxxxxxxxxx"+Common.getConnectionType();

    // encode the parameters
    URLEncodedPostData postData = new URLEncodedPostData("UTF-8", false);

    byte[] postDataBytes = postData.getBytes();

    // construct the connection
    conn = (HttpConnection)Connector.open(serverURL, Connector.READ_WRITE, true);
    conn.setRequestMethod(HttpConnection.POST);
    conn.setRequestProperty("User-Agent", "BlackBerry/" + DeviceInfo.getDeviceName() + " Software/" + DeviceInfo.getSoftwareVersion() + " Platform/" + DeviceInfo.getPlatformVersion());
    conn.setRequestProperty("Content-Language", "en-US");
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    conn.setRequestProperty("Content-Length", new Integer(postDataBytes.length).toString());

    // write the parameters
    os = conn.openOutputStream();
    os.write(postDataBytes);

    // write the data and get the response code
    int rc = conn.getResponseCode();
    if(rc == HttpConnection.HTTP_OK) {

        // read the response
        ByteVector buffer = new ByteVector();
        is = conn.openInputStream();
        long len = conn.getLength();
        int ch = 0;

        // read content-length or until connection is closed
        if( len != -1) {
            for(int i =0 ; i < len ; i++ ) {
                if((ch = is.read()) != -1) {
                    buffer.addElement((byte)ch);
                }
            }
        } else {
            while ((ch = is.read()) != -1) {
                len = is.available();
                buffer.addElement((byte)ch);
            }
        }

        // set the response
        accountsResponse = new String(buffer.getArray(), "UTF-8");
    } else {
        accountsResponse = null;
    }
} catch(Exception e){
    accountsResponse = null;
} finally {
    try {
        os.close();
    } catch (Exception e) {
        // handled by OS
    }
    try {
        is.close();
    } catch (Exception e) {
        // handled by OS
    }
    try {
        conn.close();
    } catch (Exception e) {
        // handled by OS
    }
}

0 个答案:

没有答案