Java HttpURLConnection响应不工作
在我的项目中,我有一个url 比如: 它包含Json值。要访问此字段,需要将access key作为标头 现在,我所做的是:Java HttpURLConnection响应不工作,java,android,httpurlconnection,Java,Android,Httpurlconnection,在我的项目中,我有一个url 比如: 它包含Json值。要访问此字段,需要将access key作为标头 现在,我所做的是: private String doHttpUrlConnectionAction(String desiredUrl) throws Exception { URL url = null; BufferedReader reader = null; StringBuilder stringBuilder; try {
private String doHttpUrlConnectionAction(String desiredUrl)
throws Exception
{
URL url = null;
BufferedReader reader = null;
StringBuilder stringBuilder;
try
{
// create the HttpURLConnection
url = new URL(desiredUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// just want to do an HTTP GET here
connection.setRequestMethod("GET");
// connection.setRequestProperty("Content-Type","application/json");
connection.setRequestProperty("API-KEY", "value");
// uncomment this if you want to write output to this url
connection.setDoOutput(true);
// give it 15 seconds to respond
connection.setReadTimeout(15*1000);
connection.connect();
// read the output from the server
// reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder sb = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
return sb.toString();
}
catch (Exception e)
{
e.printStackTrace();
throw e;
}
finally
{
// close the reader; this can throw an exception too, so
// wrap it in another try/catch block.
if (reader != null)
{
try
{
reader.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
}
此代码返回输出:
Response Code : 200
<table border="0" cellpadding="4" cellspacing="0"><thead><tr><th>status</th><th>statusCode</th><th>data</th></tr></thead><tbody><tr><td statusCode="200" status="1">Array</td></tr></tbody></table>
在这里,我得到了正确的输出
public String ReadHttpResponse(String url){
StringBuilder sb= new StringBuilder();
HttpClient client= new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
httpget.addHeader("API-KEY", "value");
try {
HttpResponse response = client.execute(httpget);
StatusLine sl = response.getStatusLine();
int sc = sl.getStatusCode();
if (sc==200)
{
HttpEntity ent = response.getEntity();
InputStream inpst = ent.getContent();
BufferedReader rd= new BufferedReader(new InputStreamReader(inpst));
String line;
while ((line=rd.readLine())!=null)
{
sb.append(line);
}
// System.out.println(sb.toString());
}
else
{
System.out.println("I didn't get the response!");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
HttpUrlConnection
中的问题在哪里??我在这里做错了什么??我必须使用HttpUrlConnection
。请大家帮帮我。您可以为请求POST和GET创建这样的代码逻辑。它有助于降低代码复杂性。您可以为此创建一个方法,并根据需要为GET和POST方法传递参数
HttpURLConnection urlConnection = null;
try {
// http client
murl=new URL(url);
urlConnection = (HttpURLConnection) murl.openConnection();
urlConnection.setRequestProperty("Content-Type", "application/json;odata=verbose");
urlConnection.setRequestProperty("Accept", "application/json;odata=verbose");
// Checking http request method type
if (method == POST) {
urlConnection.setRequestMethod("POST");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
if(!jsondata.equals("null")) {
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(jsondata);
writer.flush();
writer.close();
os.close();
}
} else if (method == GET) {
// appending params to url
urlConnection.setRequestMethod("GET");
}
resCode = urlConnection.getResponseCode();
Log.i("TAG", "response code=>" + resCode);
URL是否在浏览器中工作?您必须在请求中添加此标题:urlConnection.setRequestProperty(“内容类型”,“应用程序/json;odata=verbose”);setRequestProperty(“Accept”、“application/json;odata=verbose”);您的代码中没有问题,因为您从服务器端获得了200。服务器端出现问题,所以您可以从服务器端获取html代码。请检查服务器端以解决此问题。@ρц∑ρєK,URL正在工作。我在使用httpclient时也获得了价值。@Android Developer,谢谢。。现在,我得到了值。。。
HttpURLConnection urlConnection = null;
try {
// http client
murl=new URL(url);
urlConnection = (HttpURLConnection) murl.openConnection();
urlConnection.setRequestProperty("Content-Type", "application/json;odata=verbose");
urlConnection.setRequestProperty("Accept", "application/json;odata=verbose");
// Checking http request method type
if (method == POST) {
urlConnection.setRequestMethod("POST");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
if(!jsondata.equals("null")) {
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(jsondata);
writer.flush();
writer.close();
os.close();
}
} else if (method == GET) {
// appending params to url
urlConnection.setRequestMethod("GET");
}
resCode = urlConnection.getResponseCode();
Log.i("TAG", "response code=>" + resCode);