【发布时间】:2016-06-20 10:15:11
【问题描述】:
我想要一个 JSON,但我得到一个响应标头。我正在使用 Android Studio 2.1.1。我正在使用OkHttpClient 库和AsyncTask 将其与主线程分开。
public class MainActivity extends AppCompatActivity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
new PostTask().execute("url");
}
private class PostTask extends AsyncTask<String, Integer, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
String url = params[0];
// Dummy code
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(1, TimeUnit.MINUTES); // connect timeout
client.setReadTimeout(1, TimeUnit.MINUTES); // socket timeout
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "data=something");
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("cache-control", "no-cache")
.addHeader("postman-token", "7a4d5df8-5aed-19bf-e1fb-c85f821c1d10")
.addHeader("content-type", "application/x-www-form-urlencoded")
.build();
Response response = null;
try {
response = client.newCall(request).execute();
return response.toString();
} catch (Exception e1) {
e1.printStackTrace();
return e1.toString();
}
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
tv.setText(result);
}
}
}
【问题讨论】:
-
您是否尝试在普通浏览器中运行您的网址?它究竟显示了什么?
-
@naran z 我解决了...感谢您的兴趣....仅供参考,浏览器显示 ---> {"status":0,"msg":"Error:Unknown http方法用于请求!"}
标签: android json connection