請看看下面的代碼HtttpResponseException:通過JSON傳遞輸入數據到服務器
package com.example.jsontest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText editText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.
ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.edit_text);
//Call The JSon
try {
//Get the JSON
//JSONObject jObject = new JSONObject(getJson());
//editText.append(jObject.toString());
// confidence
//Put the JSON
JSONObject getJsonObject = new JSONObject(putJson());
//editText.append(getJsonObject.getString("created"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private String putJson()
{
DefaultHttpClient client = new DefaultHttpClient();
StringBuffer sb = null;
try {
String postURL = "https://bigml.io/andromeda/prediction?username=XXXXXXXX;api_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXX";
HttpPost req = new HttpPost(postURL);
req.setHeader("Content-Type", "application/json");
JSONObject requestObject = new JSONObject();
requestObject.put("model", "model/xxxxxxxxxxx");
requestObject.put("input_data", "000008:5");
StringEntity reqEntity = new StringEntity(requestObject.toString());
req.setEntity(reqEntity);
HttpResponse res = client.execute(req);
HttpEntity entity = res.getEntity();
String responseString = new BasicResponseHandler().handleResponse(res);
if (entity != null) {
//EntityUtils.consume(entity);
}
sb = new StringBuffer("");
sb.append(responseString);
} catch (Exception ex) {
ex.printStackTrace();
sb = new StringBuffer(ex.toString());
}
return sb.toString();
}
}
首先,這是一個測試代碼,這就是爲什麼網絡安全已被重寫。
我試圖將數據發送到BigML.com
得到的預測。根據理論值的預測文件,數據應該像這樣被傳遞(參見下圖),這是頁面 - https://bigml.com/developers/predictions
現在,每當我跑我的代碼,我得到以下錯誤
12-18 10:09:09.880: W/System.err(1331): org.apache.http.client.HttpResponseException: NOT FOUND
12-18 10:09:09.880: W/System.err(1331): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71)
12-18 10:09:09.889: W/System.err(1331): at com.example.jsontest.MainActivity.putJson(MainActivity.java:124)
12-18 10:09:09.889: W/System.err(1331): at com.example.jsontest.MainActivity.onCreate(MainActivity.java:58)
12-18 10:09:09.889: W/System.err(1331): at android.app.Activity.performCreate(Activity.java:5104)
12-18 10:09:09.900: W/System.err(1331): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
12-18 10:09:09.900: W/System.err(1331): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
12-18 10:09:09.910: W/System.err(1331): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-18 10:09:09.910: W/System.err(1331): at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-18 10:09:09.920: W/System.err(1331): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
12-18 10:09:09.920: W/System.err(1331): at android.os.Handler.dispatchMessage(Handler.java:99)
12-18 10:09:09.920: W/System.err(1331): at android.os.Looper.loop(Looper.java:137)
12-18 10:09:09.943: W/System.err(1331): at android.app.ActivityThread.main(ActivityThread.java:5041)
12-18 10:09:09.943: W/System.err(1331): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 10:09:09.950: W/System.err(1331): at java.lang.reflect.Method.invoke(Method.java:511)
12-18 10:09:09.950: W/System.err(1331): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-18 10:09:09.950: W/System.err(1331): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-18 10:09:09.960: W/System.err(1331): at dalvik.system.NativeStart.main(Native Method)
12-18 10:09:09.980: W/System.err(1331): org.json.JSONException: Value org.apache.http.client.HttpResponseException of type java.lang.String cannot be converted to JSONObject
12-18 10:09:09.980: W/System.err(1331): at org.json.JSON.typeMismatch(JSON.java:111)
12-18 10:09:10.000: W/System.err(1331): at org.json.JSONObject.<init>(JSONObject.java:158)
12-18 10:09:10.030: W/System.err(1331): at org.json.JSONObject.<init>(JSONObject.java:171)
12-18 10:09:10.030: W/System.err(1331): at com.example.jsontest.MainActivity.onCreate(MainActivity.java:58)
12-18 10:09:10.030: W/System.err(1331): at android.app.Activity.performCreate(Activity.java:5104)
12-18 10:09:10.040: W/System.err(1331): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
12-18 10:09:10.050: W/System.err(1331): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
12-18 10:09:10.050: W/System.err(1331): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-18 10:09:10.093: W/System.err(1331): at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-18 10:09:10.093: W/System.err(1331): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
12-18 10:09:10.100: W/System.err(1331): at android.os.Handler.dispatchMessage(Handler.java:99)
12-18 10:09:10.110: W/System.err(1331): at android.os.Looper.loop(Looper.java:137)
12-18 10:09:10.120: W/System.err(1331): at android.app.ActivityThread.main(ActivityThread.java:5041)
12-18 10:09:10.120: W/System.err(1331): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 10:09:10.153: W/System.err(1331): at java.lang.reflect.Method.invoke(Method.java:511)
12-18 10:09:10.160: W/System.err(1331): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-18 10:09:10.160: W/System.err(1331): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-18 10:09:10.171: W/System.err(1331): at dalvik.system.NativeStart.main(Native Method)
我知道驗證數據是正確的,因爲如果我只是將url https://bigml.io/andromeda/prediction?username=xxx;api_key=xxxxxxxxxxxxxx"
粘貼到瀏覽器,那麼我會得到預測數據的輸出,它是在沒有任何輸入數據的情況下創建的。
我在這裏做什麼錯了?
你可以把你的onCreate方法嗎?這似乎出錯了 –
@託恩伯格:現在看看 –