从接口获取数据出现问题(新手求助~)

LeoHirasawa LeoHirasawa 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
想做一个天气预报的功能,所以尝试着从网上的接口获取JSON数据,有一个在网上COPY下来的sycnhttp类,一个mainActivity,按照网上的教程先启动了tomcat,然后运行程序,结果出了问题,显示Toast为“未找到”,说明抛出了异常(经过我用Toast测试,在String retStr = syncHttp.httpGet(urlStr, paramsStr);这句时就无法执行了,但是可以进入try语句块,说明与后面对JSON的解析应该没什么关系。。应该就是这句话进行不下去,数据应该是没获取到),若水的教程把一个WAR包放到了tomcat的webapps文件夹中,我不会web开发什么的,小白不懂这个有用没?简单的从接口获取数据需要这个东西吗?这个天气接口,在浏览器上直接输入是有效的,但是在程序中无法获取到数据。小白求大神帮忙看看,到底是哪里出了问题呢??跪求大神啦,这任务比较紧

sycnhttp类

package com.leo.http;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

import org.apache.http.params.HttpConnectionParams;

import android.R.integer;


public class SyncHttp
{


private static final int TIME_OUT = 1000 * 6; // 超时
private static final String METHOD_POST = "POST";
private static final String METHOD_GET = "GET";
private static final int HTTP_OK = 200;
private final String CHARTSET = "UTF-8"; //字符编码
private final int BUFFER = 1024 * 8;//缓冲区
public String httpGet(String urlStr, String paramsStr) throws Exception
{

StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append(urlStr);
if (null!=paramsStr&&!paramsStr.equals(""))
{
urlBuilder.append("?");
urlBuilder.append(paramsStr);
}
//Log.i(Constants.TAG, urlBuilder.toString());
URL url = null;
HttpURLConnection conn = null;
InputStream inStream = null;
String response = null;
try
{
url = new URL(urlBuilder.toString());
System.out.println("");
//根据URL打开远程连接
conn = (HttpURLConnection) url.openConnection();
//设置参数
conn.setDoInput(true);
conn.setConnectTimeout(TIME_OUT);
conn.setRequestMethod(METHOD_GET);
conn.setRequestProperty("accept", "*/*");
//建立连接
conn.connect();
//接受返回码
int responseCode = conn.getResponseCode();
if (responseCode == HTTP_OK)
{
//获取输入流
inStream = conn.getInputStream();
//从输入流中获取信息
response = getResponse(inStream);
}
else
{
//请求失败
response = "返回码:"+responseCode;
}
} catch (Exception e)
{
throw e;
}
finally
{
//关闭连接
conn.disconnect();
}
return response;
}

private String getResponse(InputStream inStream) throws IOException
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int len = -1;
byte[] buffer = new byte[BUFFER];//缓冲区
while((len=inStream.read(buffer))!=-1)
{
outputStream.write(buffer, 0, len);
}
byte[] data = outputStream.toByteArray();
return new String(data);
}
}


mainActivity

package com.leo.http;

import org.json.JSONArray;
import org.json.JSONObject;

import android.R.string;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getweather();
}

private void getweather()
{
String urlStr = "http://api.k780.com:88/";
String paramsStr = "app=weather.future&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json";
SyncHttp syncHttp = new SyncHttp();

try
{
String retStr = syncHttp.httpGet(urlStr, paramsStr);//这句执行不了
Toast.makeText(MainActivity.this,"ok", Toast.LENGTH_LONG).show();

JSONObject jsonObject = new JSONObject(retStr);
String retstring1 = jsonObject.getString("success");

if (retstring1=="0")
{

JSONArray list = jsonObject.getJSONArray("results");

for (int i = 0; i < 1; i++)//测试,所以只读取数组的第一项
{
JSONObject weatherlist = (JSONObject)list.opt(i);
String date = weatherlist.getString("days");
String weather = weatherlist.getString("week");
String wind = weatherlist.getString("temperature");
String temperature = weatherlist.getString("weather");
Toast.makeText(MainActivity.this,"OK!", Toast.LENGTH_LONG).show();
}

}

else
{
//Toast.makeText(MainActivity.this, "未找到!", Toast.LENGTH_LONG).show();//被执行的不是这个toast,将其注释掉了还是会出现“未找到”
}

}

catch (Exception e)
{
e.printStackTrace();
Toast.makeText(MainActivity.this, "未找到!", Toast.LENGTH_LONG).show();//在此处接收到了异常,这个toast被执行了
}

}
}


在运行程序前启动了tomcat


接口在浏览器可实现内容
http://api.k780.com:88/?app=weather.future&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json

下面是LOGCAT(觉得报错的内容好像和我出现的问题没什么关联。。)

...全文

相关推荐

新手求助RBF神经网络数据预测问题-数据.xls

新手求助RBF神经网络数据预测问题-数据.xls 本程序用前六个数据预测下一数据,前200组数据用于训练,用后80组数据进行预测,可预测结果为一个值,请大家指教: 源程序为: clc clear close all %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %每五个数据整合, x=xlsread; n=length m=5; sum=0; j=1; x1=zeros); for k=1:m:n     for i=k:         sum=sum x;     end     x1=sum;     j=j 1;     sum=0; end j t=1:; figure plot;%,'d-m' hold on; grid on title; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %归一化处理 [x2,mint,maxt] = premnmx figure plot;%,'d-m' hold on; grid on title; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %输入数据 for k=1:1:200     p_train=[x2 x2 x2 x2 x2 x2]; 5*6     t_train=x2; 5*1 end     p_train=p_train'; %6*195     t_train=t_train'; %1*195 for z=1:1:81     p_test=[x2 x2 x2 x2 x2 x2];     t_test=x2; end      p_test=p_test';      t_test=t_test'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %建立 RBF 网络                      goal = 0.0001;                     % 训练误差的平方和 spread = 0.01;                     % 此值越大,需要的神经元就越少 MN = size;              % 最大神经元数 DF = 1;                            % 显示间隔 net = newrb; data_out=sim p_mse=mse figure plot hold on plot title; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %预测并作图 y=sim y_mse=mse figure plot; hold on; plot title; legend;

weixin_39841365

如何利用python调用API接口获取数据进行测试

如果响应数据是 JSON 格式的,可以将其转换为 Python 字典并进行处理。响应的数据格式可能有多种,如 JSON、XML 等。和 API 服务商提供的 SDK 文档等进行参考。以上是基础的 API 调用操作,具体实现需根据。根据 API 文档,构建请求的URL。3.构建 API 请求的 URL。1.安装 requests 库。2.导入 requests 库。是获取所有帖子的 URL。方法发送请求,并接收响应。4.发送 API 请求。

曹先森Caden

连接webservice数据接口,获取数据的小例子,这里使用的是winfrom

连接webservice数据接口,获取数据的小例子,这里使用的是winfrom来展示,主要内容是怎么获取webservice的数据,同时怎么解析。

hufei080827

新手求助RBF神经网络数据预测问题-历史开奖数据.xlsx

新手求助RBF神经网络数据预测问题-历史开奖数据.xlsx 本程序用前六个数据预测下一数据,前200组数据用于训练,用后80组数据进行预测,可预测结果为一个值,请大家指教: 源程序为: clc clear close all %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %每五个数据整合, x=xlsread; n=length m=5; sum=0; j=1; x1=zeros); for k=1:m:n     for i=k:         sum=sum x;     end     x1=sum;     j=j 1;     sum=0; end j t=1:; figure plot;%,'d-m' hold on; grid on title; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %归一化处理 [x2,mint,maxt] = premnmx figure plot;%,'d-m' hold on; grid on title; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %输入数据 for k=1:1:200     p_train=[x2 x2 x2 x2 x2 x2]; 5*6     t_train=x2; 5*1 end     p_train=p_train'; %6*195     t_train=t_train'; %1*195 for z=1:1:81     p_test=[x2 x2 x2 x2 x2 x2];     t_test=x2; end      p_test=p_test';      t_test=t_test'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %建立 RBF 网络                      goal = 0.0001;                     % 训练误差的平方和 spread = 0.01;                     % 此值越大,需要的神经元就越少 MN = size;              % 最大神经元数 DF = 1;                            % 显示间隔 net = newrb; data_out=sim p_mse=mse figure plot hold on plot title; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %预测并作图 y=sim y_mse=mse figure plot; hold on; plot title; legend;

weixin_39841848

紧急求助关于SVM调用问题-SVMcgForRegress.m

紧急求助关于SVM调用问题-SVMcgForRegress.m 每次调用svm都会报错导致程序中断,求大神能帮调试下,小弟已经弄1下午了……也求助过老师TOT都没成功~谢谢了先

weixin_39841365
评论 11
收藏 已收藏
分享
返回顶部
LeoHirasawa
Android 80,490 成员 91,375 内容