http пост Blackberry (нулевой ответ) - PullRequest
1 голос
/ 23 января 2012

Я использовал этот код мода с какого-то URL здесь :

    HttpConnection httpConnection = (HttpConnection) Connector.open(webservice_address,Connector.READ_WRITE);
    httpConnection.setRequestMethod(HttpConnection.POST);
    httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

    URLEncodedPostData encPostData = new URLEncodedPostData("UTF-8", false);
    encPostData.append("category", String.valueOf(category));
    byte[] postData = encPostData.toString().getBytes("UTF-8");

    httpConnection.setRequestProperty("Content-Length", String.valueOf(postData.length));
    OutputStream os = httpConnection.openOutputStream();
    os.write(postData);
    os.flush();
    os.close();
    return httpConnection.getResponseMessage();

Но ответ всегда один и тот же, я получаю "ноль все время, когда я ожидал получить ответ объекта JSON, есть идеи?

P.S .: Я уверен, что сервер отправляет данные

P.S .: Я пытался с Connector.READ_WRITE с тем же результатом.

P.S: Я делаю это в симуляторе Blackberry 9930

Ответы [ 3 ]

4 голосов
/ 24 января 2012

Попробуйте подобный пример кода:

public class ConnectionThread extends Thread 
{       
String url;
HttpConnection httpConnection;
InputStream inputStream;
String id="0";  
StringBuffer stringBuffer=new StringBuffer();
public ConnectionThread(String url) 
{   
    this.url=url;       
}
public void run() 
{
    try
    {
        httpConnection=(HttpConnection)Connector.open("Giver Your URL"+";interface=wifi");
        URLEncodedPostData oPostData = new URLEncodedPostData(URLEncodedPostData.DEFAULT_CHARSET, false);

        oPostData.append("category",id);//Parameters list;  
        oPostData.append("categoryName","Categ1");

        System.out.println("================"+oPostData.toString());
        httpConnection.setRequestMethod(HttpConnection.POST);
        httpConnection.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE, oPostData.getContentType());
        byte [] postBytes = oPostData.getBytes();
        httpConnection.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH, Integer.toString(postBytes.length));
        OutputStream strmOut = httpConnection.openOutputStream();
        strmOut.write(postBytes);
        strmOut.flush();
        strmOut.close();

        int response=httpConnection.getResponseCode();
        if(response==HttpConnection.HTTP_OK)
        {
            inputStream = httpConnection.openInputStream();
            int c;
            while((c=inputStream.read())!=-1)
            {
                stringBuffer.append((char)c);
            }
            callBack(stringBuffer.toString());

        }
        else
        {
            callBack("ERROR");
        }
    }
    catch (Exception e) 
    {
        synchronized (UiApplication.getEventLock()) 
        {
            UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
            StartUp.exceptionHandling(e.getMessage());
        }           
    }
    finally
    {
        try 
        {
            if(httpConnection!=null)
            {
                httpConnection.close();
            }
            if(inputStream!=null)
            {
                inputStream.close();
            }
        } 
        catch (Exception e2) 
        {}          
    }       
}
private void callBack(String response)
{
    if(response.equals("ERROR"))
    {
        UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
        // Put an alert here that "URL Not found";
    }
    else
    {
        try
        {
            System.out.println(response);
            //do what you want;                                     
        }
        catch (Exception e) 
        {
            // Put an alert here that "Data Not found";
        }
    }
}   
}

Это пример кода для POST данных;

1 голос
/ 23 января 2012

Пожалуйста, добавьте Connector.READ_WRITE в Connector.open

HttpConnection httpConnection = (HttpConnection) Connector.open(webservice_address,Connector.READ_WRITE);
0 голосов
/ 24 января 2012

Вы пытались избежать звонка os.close() до прочтения ответа?

...