Ich bin immer die Ausnahme wie Versuchten Lesen Sie auf schließen, stream in folgenden code
IN MainActivity.java
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://192.168.5.10/ijoomer_development/index.php?option=com_ijoomer&plg_name=jomsocial&pview=user&ptask=login&tmpl=component");
StringBuffer strBuffer = new StringBuffer("<data><username>" + username + "</username><password>" + password + "</password><lat>" + lat +"</lat><long>"+ longi +"</long></data>");
StringEntity strEntity = new StringEntity(strBuffer.toString());
post.setEntity(strEntity);
HttpResponse response = client.execute(post);
InputStream in = response.getEntity().getContent();
MainActivity mActivity = new MainActivity();
System.out.println(mActivity.convertStreamToString(in));
demoHandler = new DemoHandler();
ArrayList<UserBean> users = demoHandler.parse(in);
Log.i("VALUE OF USER",""+users);
IN DemoHandler.java
public ArrayList<UserBean> parse(InputStream in) {
try {
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
parser.parse(in, this);
} catch (ParserConfigurationException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
return records;
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
{
data.replace(0, data.length(), "");
if(localName.equalsIgnoreCase(ROOT_TAG))
bean = new UserBean();
}
public void characters(char[] ch, int start, int length) throws SAXException {
data.append(ch, start, length);
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException
{
if(localName.equalsIgnoreCase(TAG_USERNAME))
bean.username = data.toString().trim();
else if(localName.equalsIgnoreCase(TAG_PASSWORD))
bean.password = data.toString().trim();
else if(localName.equalsIgnoreCase(TAG_LAT))
bean.lat = data.toString().trim();
else if(localName.equalsIgnoreCase(TAG_LONG))
records.add(bean);
}
public String convertStreamToString(InputStream in) throws IOException {
if (in != null) {
writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
in.close();
}
return writer.toString();
} else {
return "";
}
}
}
Bin ich immer Fehler in Zeile ArrayList<UserBean> users = demoHandler.parse(in);
im MainActivity.java
Ich bin immer noch ein Fehler in Zeile parser.parse(in, this);
im DemoHandler.java
Ausnahme:
03-19 11:25:03.108: WARN/ExpatReader(297): DTD handlers aren't supported.
03-19 11:25:03.108: WARN/System.err(297): java.io.IOException: Attempted read on closed stream.
03-19 11:25:03.169: WARN/System.err(297): at org.apache.http.conn.EofSensorInputStream.isReadAllowed(EofSensorInputStream.java:127)
03-19 11:25:03.169: WARN/System.err(297): at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:176)
03-19 11:25:03.169: WARN/System.err(297): at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:504)
03-19 11:25:03.169: WARN/System.err(297): at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:467)
03-19 11:25:03.169: WARN/System.err(297): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:329)
03-19 11:25:03.169: WARN/System.err(297): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:286)
03-19 11:25:03.209: WARN/System.err(297): at javax.xml.parsers.SAXParser.parse(SAXParser.java:361)
03-19 11:25:03.219: WARN/System.err(297): at javax.xml.parsers.SAXParser.parse(SAXParser.java:240)
03-19 11:25:03.219: WARN/System.err(297): at com.demo.parsing.DemoHandler.parse(DemoHandler.java:69)
03-19 11:25:03.219: WARN/System.err(297): at com.demo.parsing.MainActivity$1.onClick(MainActivity.java:119)
03-19 11:25:03.219: WARN/System.err(297): at android.view.View.performClick(View.java:2364)
03-19 11:25:03.219: WARN/System.err(297): at android.view.View.onTouchEvent(View.java:4179)
03-19 11:25:03.219: WARN/System.err(297): at android.widget.TextView.onTouchEvent(TextView.java:6540)
03-19 11:25:03.219: WARN/System.err(297): at android.view.View.dispatchTouchEvent(View.java:3709)
03-19 11:25:03.219: WARN/System.err(297): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-19 11:25:03.219: WARN/System.err(297): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-19 11:25:03.219: WARN/System.err(297): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-19 11:25:03.219: WARN/System.err(297): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-19 11:25:03.219: WARN/System.err(297): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
03-19 11:25:03.219: WARN/System.err(297): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
03-19 11:25:03.219: WARN/System.err(297): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
03-19 11:25:03.219: WARN/System.err(297): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
03-19 11:25:03.239: WARN/System.err(297): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
03-19 11:25:03.239: WARN/System.err(297): at android.os.Handler.dispatchMessage(Handler.java:99)
03-19 11:25:03.239: WARN/System.err(297): at android.os.Looper.loop(Looper.java:123)
03-19 11:25:03.239: WARN/System.err(297): at android.app.ActivityThread.main(ActivityThread.java:4363)
03-19 11:25:03.239: WARN/System.err(297): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 11:25:03.239: WARN/System.err(297): at java.lang.reflect.Method.invoke(Method.java:521)
03-19 11:25:03.239: WARN/System.err(297): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-19 11:25:03.239: WARN/System.err(297): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-19 11:25:03.329: WARN/System.err(297): at dalvik.system.NativeStart.main(Native Method)
03-19 11:25:03.329: INFO/VALUE OF USER(297): []
- Was ist in Ihrem convertStreamToString Methode?
- ich habe editiert-code jetzt und auch i m geben Sie die Methode hier..
- public String convertStreamToString(InputStream in) throws IOException { if (in != null) { Writer writer = new StringWriter(); char[] buffer = new char[1024]; try { Reader reader = new BufferedReader( new InputStreamReader(in, "UTF-8")); int n; while ((n = reader.read(buffer)) != -1) { writer.write(buffer, 0, n); } } finally { in.close(); } return writer.toString(); } else { return ""; } }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich sehe, Sie nennen das erste:
Davon aus, dass die gleichen converSTreamToSTring wie unten in Ihre DemoHandler, diese Funktion ruft
Damit Sie-stream ist jetzt geschlossen. Wie der Fehler sagt, Sie versuchen, um Dinge zu tun, die mit der stream später auf in dieser Zeile:
So, ich bin nicht überrascht, Sie sind immer das
java.io.IOException: Attempted read on closed stream.
Fehler. Weil Sie zuerst Geschlossen den Bach, und dann versucht, etwas zu tun mit es.in.close()
Aussage von denen ist es (zu früh) und legen Sie es irgendwo anders. Wie in Sie die Haupt-Aktivität.convertStreamToString()
Funktionen? Es scheint sich um eine in der demoHandler, aber es sieht aus wie die, die Sie nennen, ist in deiner mainActivity? Haben Sie entfernen dieclose()
aus die richtige?Ich hatte ein ähnliches problem in letzter Zeit und ich habe es behoben durch das entfernen
method.releaseConnection()
am Ende der Funktion. Vielleicht helfen !