我正在爲Phillips Hue Lights創建一個應用程序,我希望能夠點擊一個按鈕,該按鈕將從我的應用程序發送到Hue Bridge的特定URL的發佈請求,以便獲取返回的用戶名。發佈請求單擊按鈕android studio
我的代碼:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.concurrent.ExecutionException;
public class Device extends AppCompatActivity {
HashMap<String, String> params = new HashMap<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device);
{
params.put("devicetype", "final_year_project#michelle");
PostHandler handler = new PostHandler(params);
try {
JSONObject response = handler.execute("http://192.168.1.85/api/").get();
Log.d("TEST_RESPONSE", response.toString());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
}
我也創建了PostHandler類:
import android.os.AsyncTask;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class PostHandler extends AsyncTask<String, Void, JSONObject> {
OkHttpClient client = new OkHttpClient();
HashMap<String, String> params = new HashMap<>();
public PostHandler(HashMap params) {
this.params = params;
}
public PostHandler() {
}
@Override
protected JSONObject doInBackground(String... url) {
client = new OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.MINUTES)
.writeTimeout(5, TimeUnit.MINUTES)
.readTimeout(5, TimeUnit.MINUTES)
.build();
FormBody.Builder body = new FormBody.Builder();
for (Map.Entry<String, String> entry : params.entrySet()) {
body.add(entry.getKey(), entry.getValue());
}
RequestBody formBody = body.build();
Request request = new Request.Builder()
.url(url[0])
.post(formBody)
.build();
try{
Response response = client.newCall(request).execute();
String result = response.body().string();
JSONObject json = new JSONObject(result);
return json;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}
我得到一個錯誤 「無法解析符號PARAMS」 和POST請求做不行。
有沒有人知道我要去哪裏錯了?我是使用API的新手。
你的代碼中變量'params'的聲明在哪裏? –
你從來沒有聲明或初始化參數,你也應該顯示你的PostHandler類。 – greenteafox
你能分享完整的代碼類與這個信息不清楚爲什麼發生錯誤。 –