0
它已經很久了我被這個問題困住了,從我的androidApp HTTP get get to work fine我的電纜調制解調器HTTP服務器,但在與Linux的mini_httpd我得到這個org.apache.http.client.ClientProtocolException客戶處後不久org.apache.http.ProtocolException:無效的頭文件:<?xml version =「1.0」encoding =「UTF-8」?>
httpClient.execute(httpget);
我做了很多的研究在這裏張貼了這個問題之前,在我沒有設置contentType爲xml之前,但我正在做它
httpget.setHeader("Content-Type", "application/xml"); but still struggling with same error.
詳細代碼如下
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 10000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 25000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpGet httpget = new HttpGet(URL);
httpget.setHeader("Content-Type", "application/xml");
httpget.addHeader("Accept", "text/xml");
httpget.setParams(httpParameters);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = null;
try {
response = httpClient.execute(httpget);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
Log.d("Http response", "response string got");
/* parse the response received from server */
try {
cmInfo = xmlParser.parse(response.getEntity().getContent());
Log.d("Http Response","back in main");
} catch (XmlPullParserException e1) {
Log.d("parse:", "XmlPullParserException");
e1.printStackTrace();
} catch (IOException e1) {
Log.d("parse:", "IOException");
e1.printStackTrace();
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), errMsg2, Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), errMsg1, Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Connection Refused from server or Connection Timeout", Toast.LENGTH_LONG).show();
}
請建議做什麼或有什麼解決辦法。
這裏是logcat的
03-18 18:41:08.246: D/getWifiDetails: cmURL:(32090): http://192.168.0.1:50010?
03-18 18:41:08.246: D/WizardYourWifiActivity: URL-(32090): http://192.168.0.1:50010?get_data=PARM_WIFI_SSIDNAME_2_4G,PARM_WIFI_SSIDNAME_5G,PARM_WIFI_SECURITYMODE_2_4G,PARM_WIFI_SECURITYMODE_5G,PARM_WIFI_PASSPHRASE_2_4G,PARM_WIFI_PASSPHRASE_5G,PARM_WIFI_MODE_2_4G,PARM_WIFI_MODE_5G,PARM_WIFI_POWER_2_4G,PARM_WIFI_POWER_5G,PARM_WIFI_CHANNEL_2_4G,PARM_WIFI_CHANNEL_5G,PARM_WIFI_GUEST_NW_EN_2_4G,PARM_WIFI_GUEST_NW_EN_5G
03-18 18:41:08.707: W/System.err(32090): org.apache.http.client.ClientProtocolException
03-18 18:41:08.713: W/System.err(32090): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557)
03-18 18:41:08.713: W/System.err(32090): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
03-18 18:41:08.713: W/System.err(32090): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
03-18 18:41:08.713: W/System.err(32090): at com.arrisi.selfinstall.wizard.WizardYourWifiActivity.doCustomCreate(WizardYourWifiActivity.java:98)
03-18 18:41:08.713: W/System.err(32090): at com.arrisi.selfinstall.wizard.BaseWizardActivity.onCreate(BaseWizardActivity.java:44)
03-18 18:41:08.713: W/System.err(32090): at android.app.Activity.performCreate(Activity.java:5933)
03-18 18:41:08.713: W/System.err(32090): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
03-18 18:41:08.713: W/System.err(32090): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
03-18 18:41:08.713: W/System.err(32090): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
03-18 18:41:08.713: W/System.err(32090): at android.app.ActivityThread.access$800(ActivityThread.java:144)
03-18 18:41:08.714: W/System.err(32090): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
03-18 18:41:08.714: W/System.err(32090): at android.os.Handler.dispatchMessage(Handler.java:102)
03-18 18:41:08.714: W/System.err(32090): at android.os.Looper.loop(Looper.java:135)
03-18 18:41:08.714: W/System.err(32090): at android.app.ActivityThread.main(ActivityThread.java:5221)
03-18 18:41:08.714: W/System.err(32090): at java.lang.reflect.Method.invoke(Native Method)
03-18 18:41:08.714: W/System.err(32090): at java.lang.reflect.Method.invoke(Method.java:372)
03-18 18:41:08.714: W/System.err(32090): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
03-18 18:41:08.714: W/System.err(32090): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
03-18 18:41:08.714: W/System.err(32090): Caused by: org.apache.http.ProtocolException: Invalid header: <?xml version="1.0" encoding="UTF-8"?>
03-18 18:41:08.714: W/System.err(32090): at org.apache.http.impl.io.AbstractMessageParser.parseHeaders(AbstractMessageParser.java:162)
03-18 18:41:08.714: W/System.err(32090): at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:178)
03-18 18:41:08.714: W/System.err(32090): at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
03-18 18:41:08.714: W/System.err(32090): at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
03-18 18:41:08.714: W/System.err(32090): at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
03-18 18:41:08.714: W/System.err(32090): at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
03-18 18:41:08.714: W/System.err(32090): at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
03-18 18:41:08.714: W/System.err(32090): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
03-18 18:41:08.715: W/System.err(32090): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
03-18 18:41:08.715: W/System.err(32090): ... 17 more
的問題是不是在客戶端,服務器返回不正確的頭一個反應,你應該跟蹤原始服務器響應。無論如何,如果你想做一個簡單的請求,使用Apache Http組件沒有意義,請使用Android的默認HttpURLConnection。 – vzamanillo 2015-03-19 12:27:54
@vzamanillo我編輯了我的問題與服務器的響應。服務器實際上是按照期望響應正確的消息,但在客戶端代碼拋出ClientProtocolException – 2015-03-19 13:27:27
檢查此http://stackoverflow.com/questions/12684739/,跟蹤服務器響應看到服務器返回的http頭,是在客戶端不是錯誤,但客戶端會向您發出有關錯誤的警告。 – vzamanillo 2015-03-19 14:01:32