0

Nokia Asha 501(s40) の J2ME アプリから http-post リクエストを作成しています。開発には Nokia Asha SDK 1.0 を使用しています。

アプリが http 接続を確立しようとすると、例外をスローすることなく、try-catch ステートメントの finally 句に直接入ります。

エミュレーターで、次のメッセージが表示されます-「このアプリの実行中に問題が発生しました」-スクリーンショットリンク

次に、Nokia 開発者フォーラムで提供されているサンプルの http-post ソース コードを試してみましたが、同じ結果が得られました。

コードを以下に示します。

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*; 

public class HttpPOST extends MIDlet implements CommandListener {

private static String defaultURL = "http://localhost/api/signin"; 

private Display myDisplay = null;
private Form mainScreen;
private TextField requestField; 

private Form resultScreen;
private StringItem resultField;

Command sendCommand = new Command("SEND", Command.OK, 1);
Command backCommand = new Command("BACK", Command.OK, 1);

public HttpPOST()
{
    myDisplay = Display.getDisplay(this);
mainScreen = new Form("Type in a URL:");
requestField = new TextField(null, defaultURL, 100, TextField.URL);
mainScreen.append(requestField);
mainScreen.addCommand(sendCommand);
mainScreen.setCommandListener(this);
}

public void startApp() {myDisplay.setCurrent(mainScreen);}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s) 
{ 
if (c == sendCommand) 
{
    String urlstring = requestField.getString();

    String resultstring = sendPostRequest(urlstring);

    resultScreen = new Form("POST Result:");
    resultField = new StringItem(null, resultstring);
    resultScreen.append(resultField);
    resultScreen.addCommand(backCommand);
    resultScreen.setCommandListener(this);
    myDisplay.setCurrent(resultScreen);

} 
else if (c == backCommand) 
{
    requestField.setString(defaultURL);
    myDisplay.setCurrent(mainScreen); 
}
}

public String sendPostRequest(String urlstring) 
{
HttpConnection hc = null;
DataInputStream dis = null;
DataOutputStream dos = null;

String message = "";

String requeststring = "email=test@gmail.com&password=1234";
try 
{
    hc = (HttpConnection) Connector.open(urlstring, Connector.READ_WRITE);

    hc.setRequestMethod(HttpConnection.POST);

    dos = hc.openDataOutputStream();
    byte[] request_body = requeststring.getBytes();

    for (int i = 0; i < request_body.length; i++)
    {
        dos.writeByte(request_body[i]);
    }
    // flush outdos.flush();

    dis = new DataInputStream(hc.openInputStream());

    int ch;
    while ((ch = dis.read()) != -1) 
    {
        message = message + (char) ch;
    }

}
catch (IOException ioe) 
{
    message = "ERROR";
} 
finally 
{
    try 
    { 
        if (hc != null) 
            hc.close();
    }
    catch (IOException ignored) 
    {
    }
    try 
    { 
        if (dis != null) 
            dis.close();
    } 
    catch (IOException ignored) 
    {
    } 
    try 
    { 
        if (dos != null) 
            dos.close();
    } 
    catch (IOException ignored) 
    {
    } 
}
return message;
}
}

誰かがこの問題を解決するのを手伝ってください。

前もって感謝します。

4

1 に答える 1