Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android HttpURLConnect输入流和文件写入_Android_Glassfish - Fatal编程技术网

Android HttpURLConnect输入流和文件写入

Android HttpURLConnect输入流和文件写入,android,glassfish,Android,Glassfish,我正在开发一个不工作的Android 1.6应用程序,我正在联系一个RESTful服务器下载一个JSON对象,以便将数据导入应用程序。 清单文件已使用Internet和写入外部存储的任务。 虽然我不确定我的权限是否有效。 需要做的是,PUT请求需要使用对象控件的JSON字符串转到服务器。服务器更新控件对象并将其传回。 我需要从控制对象中取出一个字段,并将其保存到SD卡上的文件中。我做错了什么,或者我在哪里可以找到更好的方法? 网络代码是从它工作的Java应用程序移植的,我认为它在InputStr

我正在开发一个不工作的Android 1.6应用程序,我正在联系一个RESTful服务器下载一个JSON对象,以便将数据导入应用程序。 清单文件已使用Internet和写入外部存储的任务。 虽然我不确定我的权限是否有效。 需要做的是,PUT请求需要使用对象控件的JSON字符串转到服务器。服务器更新控件对象并将其传回。 我需要从控制对象中取出一个字段,并将其保存到SD卡上的文件中。我做错了什么,或者我在哪里可以找到更好的方法? 网络代码是从它工作的Java应用程序移植的,我认为它在InputStream in=conn.getInputStream;这行行将消亡

以下是执行过程中的堆栈跟踪

03-16 23:01:15.105: ERROR/Net(23700): six8a.rdg.ac.uk/192.100.154.8:8080 - Connection refused
03-16 23:01:15.105: ERROR/Net(23700): six8a.rdg.ac.uk/192.100.154.8:8080 - Connection refused
03-16 23:01:15.105: WARN/System.err(23700): java.net.ConnectException: six8a.rdg.ac.uk/192.100.154.8:8080 - Connection refused
03-16 23:01:15.115: WARN/System.err(23700):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:254)
03-16 23:01:15.115: WARN/System.err(23700):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:533)
03-16 23:01:15.115: WARN/System.err(23700):     at java.net.Socket.connect(Socket.java:1055)
03-16 23:01:15.115: WARN/System.err(23700):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62)
03-16 23:01:15.115: WARN/System.err(23700):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:88)
03-16 23:01:15.115: WARN/System.err(23700):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHTTPConnection(HttpURLConnectionImpl.java:927)
03-16 23:01:15.115: WARN/System.err(23700):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:909)
03-16 23:01:15.126: WARN/System.err(23700):     at uk.ac.reading.sse.mz014227.cat.CAT.updateExercises(CAT.java:123)
03-16 23:01:15.126: WARN/System.err(23700):     at uk.ac.reading.sse.mz014227.cat.CAT.onOptionsItemSelected(CAT.java:92)
03-16 23:01:15.126: WARN/System.err(23700):     at android.app.Activity.onMenuItemSelected(Activity.java:2202)
03-16 23:01:15.126: WARN/System.err(23700):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:739)
03-16 23:01:15.126: WARN/System.err(23700):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
03-16 23:01:15.126: WARN/System.err(23700):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
03-16 23:01:15.126: WARN/System.err(23700):     at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:545)
03-16 23:01:15.126: WARN/System.err(23700):     at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
03-16 23:01:15.126: WARN/System.err(23700):     at android.view.View$PerformClick.run(View.java:8817)
03-16 23:01:15.126: WARN/System.err(23700):     at android.os.Handler.handleCallback(Handler.java:587)
03-16 23:01:15.126: WARN/System.err(23700):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-16 23:01:15.126: WARN/System.err(23700):     at android.os.Looper.loop(Looper.java:144)
03-16 23:01:15.126: WARN/System.err(23700):     at android.app.ActivityThread.main(ActivityThread.java:4937)
03-16 23:01:15.126: WARN/System.err(23700):     at java.lang.reflect.Method.invokeNative(Native Method)
03-16 23:01:15.135: WARN/System.err(23700):     at java.lang.reflect.Method.invoke(Method.java:521)
03-16 23:01:15.135: WARN/System.err(23700):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-16 23:01:15.135: WARN/System.err(23700):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-16 23:01:15.135: WARN/System.err(23700):     at dalvik.system.NativeStart.main(Native Method)
03-16 23:01:15.135: ERROR/File(23700): File /sdcard/CAT/wtpm/wtpm.dat contains a path separator
03-16 23:01:15.135: ERROR/File(23700): File /sdcard/CAT/wtpm/wtpm.dat contains a path separator
03-16 23:01:15.135: WARN/System.err(23700): java.lang.IllegalArgumentException: File /sdcard/CAT/wtpm/wtpm.dat contains a path separator
03-16 23:01:15.135: WARN/System.err(23700):     at android.app.ContextImpl.makeFilename(ContextImpl.java:1641)
03-16 23:01:15.135: WARN/System.err(23700):     at android.app.ContextImpl.openFileOutput(ContextImpl.java:415)
03-16 23:01:15.135: WARN/System.err(23700):     at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:158)
03-16 23:01:15.135: WARN/System.err(23700):     at uk.ac.reading.sse.mz014227.cat.CAT.updateExercises(CAT.java:147)
03-16 23:01:15.146: WARN/System.err(23700):     at uk.ac.reading.sse.mz014227.cat.CAT.onOptionsItemSelected(CAT.java:92)
03-16 23:01:15.146: WARN/System.err(23700):     at android.app.Activity.onMenuItemSelected(Activity.java:2202)
03-16 23:01:15.146: WARN/System.err(23700):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:739)
03-16 23:01:15.146: WARN/System.err(23700):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
03-16 23:01:15.146: WARN/System.err(23700):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
03-16 23:01:15.146: WARN/System.err(23700):     at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:545)
03-16 23:01:15.146: WARN/System.err(23700):     at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
03-16 23:01:15.146: WARN/System.err(23700):     at android.view.View$PerformClick.run(View.java:8817)
03-16 23:01:15.146: WARN/System.err(23700):     at android.os.Handler.handleCallback(Handler.java:587)
03-16 23:01:15.146: WARN/System.err(23700):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-16 23:01:15.146: WARN/System.err(23700):     at android.os.Looper.loop(Looper.java:144)
03-16 23:01:15.146: WARN/System.err(23700):     at android.app.ActivityThread.main(ActivityThread.java:4937)
03-16 23:01:15.146: WARN/System.err(23700):     at java.lang.reflect.Method.invokeNative(Native Method)
03-16 23:01:15.146: WARN/System.err(23700):     at java.lang.reflect.Method.invoke(Method.java:521)
03-16 23:01:15.146: WARN/System.err(23700):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-16 23:01:15.146: WARN/System.err(23700):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-16 23:01:15.146: WARN/System.err(23700):     at dalvik.system.NativeStart.main(Native Method)
Gson Gson=新Gson

String jsonString = "";
String encoding = "UTF-8";

try{
    String uriAddress = "address";
    URI uri = new URI(uriAddress);
    URL url = uri.toURL();
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestMethod("PUT");
    conn.setRequestProperty("Content-Type", "application/json");
    OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
    String putRequest = gson.toJson(control);
    Log.d("Gson", gson.toJson(control));
    out.write(putRequest);
    out.flush();
    int x = conn.getResponseCode();
    Log.d("Repsonse Code", "" + x);
    out.close();
    InputStream in = conn.getInputStream();
    StringWriter writer = new StringWriter();
    IOUtils.copy(in, writer, encoding);
    jsonString = writer.toString();
}catch(Exception e){
    Log.e("Net", e.getMessage());
    Log.e("Net", e.getLocalizedMessage());
    e.printStackTrace();
}
Log.e("Gson2", jsonString);
control = gson.fromJson(jsonString, WordToPictureMatchingDataTransferControl.class);

File file = new File("/sdcard/CAT/wtpm.dat");

FileOutputStream binOutFile;
ObjectOutputStream objOut;

// initialise FileOutputStream
try {
    binOutFile = new FileOutputStream(file);
    objOut = new ObjectOutputStream(binOutFile);
    objOut.writeObject(control.getWtpmdtArray());
    objOut.close();
    binOutFile.close();
} catch (Exception e) {
    // if exception warn and return
    Log.e("File", e.getLocalizedMessage());
    Log.e("File", e.getMessage());
    e.printStackTrace();
}

}

当你说我认为它在InputStream in=conn.getInputStream这行行将消亡;什么意思?应用程序是否强制关闭?或者只是表现得不符合预期?如果是强制关闭,那么如果您发布来自logcat的输出,我们将更容易提供帮助。logcat没有发布任何内容。我不得不一行一行地强制更改布局,以显示它正在走多远。我可以在那一行之前更改布局,如果我在那一行之后更改布局,那么它就不会更改布局。因此,我认为它正在向logcat抛出一个异常,但我不知道为什么。glassfish RESTful服务器似乎在拒绝连接。我已经从一个连接拒绝错误升级到了同一行上的java.io.FileNotFound错误
Gson gson = new Gson();

    String jsonString = "";
    String encoding = "UTF-8";

    try{
        String uriAddress = "address";
        URI uri = new URI(uriAddress);
        URL url = uri.toURL();
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("PUT");
        conn.setRequestProperty("Content-Type", "application/json");
        OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
        String putRequest = gson.toJson(control);
        Log.d("Gson", gson.toJson(control));
        out.write(putRequest);
        out.flush();
        int x = conn.getResponseCode();
        Log.d("Repsonse Code", "" + x);
        out.close();
        InputStream in = conn.getInputStream();
        StringWriter writer = new StringWriter();
        IOUtils.copy(in, writer, encoding);
        jsonString = writer.toString();
    }catch(Exception e){
        Log.e("Net", e.getMessage());
        Log.e("Net", e.getLocalizedMessage());
        e.printStackTrace();
    }
    Log.e("Gson2", jsonString);
    control = gson.fromJson(jsonString, WordToPictureMatchingDataTransferControl.class);

    File file = new File("/sdcard/CAT/wtpm.dat");

    FileOutputStream binOutFile;
    ObjectOutputStream objOut;

    // initialise FileOutputStream
    try {
        binOutFile = new FileOutputStream(file);
        objOut = new ObjectOutputStream(binOutFile);
        objOut.writeObject(control.getWtpmdtArray());
        objOut.close();
        binOutFile.close();
    } catch (Exception e) {
        // if exception warn and return
        Log.e("File", e.getLocalizedMessage());
        Log.e("File", e.getMessage());
        e.printStackTrace();
    }

}
String jsonString = "";
String encoding = "UTF-8";

try{
    String uriAddress = "address";
    URI uri = new URI(uriAddress);
    URL url = uri.toURL();
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestMethod("PUT");
    conn.setRequestProperty("Content-Type", "application/json");
    OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
    String putRequest = gson.toJson(control);
    Log.d("Gson", gson.toJson(control));
    out.write(putRequest);
    out.flush();
    int x = conn.getResponseCode();
    Log.d("Repsonse Code", "" + x);
    out.close();
    InputStream in = conn.getInputStream();
    StringWriter writer = new StringWriter();
    IOUtils.copy(in, writer, encoding);
    jsonString = writer.toString();
}catch(Exception e){
    Log.e("Net", e.getMessage());
    Log.e("Net", e.getLocalizedMessage());
    e.printStackTrace();
}
Log.e("Gson2", jsonString);
control = gson.fromJson(jsonString, WordToPictureMatchingDataTransferControl.class);

File file = new File("/sdcard/CAT/wtpm.dat");

FileOutputStream binOutFile;
ObjectOutputStream objOut;

// initialise FileOutputStream
try {
    binOutFile = new FileOutputStream(file);
    objOut = new ObjectOutputStream(binOutFile);
    objOut.writeObject(control.getWtpmdtArray());
    objOut.close();
    binOutFile.close();
} catch (Exception e) {
    // if exception warn and return
    Log.e("File", e.getLocalizedMessage());
    Log.e("File", e.getMessage());
    e.printStackTrace();
}