Java运行异常:Cannot convert result to String

qq_37206704 2018-07-30 11:14:56
package com.liyinan.mobileblockchain;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.alexd.jsonrpc.JSONRPCException;
import org.alexd.jsonrpc.JSONRPCHttpClient;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;



public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private Button showButton;
private TextView textview;

public static final int SHOW = 0;

private Handler handler = new Handler() {

public void handleMessage(Message msg) {
switch (msg.what) {
case SHOW:
String a = (String) msg.obj;
textview.setText(a);
}
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview = findViewById(R.id.textview);
showButton = findViewById(R.id.showView);
showButton.setOnClickListener(this);
}

@Override
public void onClick(View v) {
if(v.getId() == R.id.showView) {
show();
}
}

private void show() {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = "http://10.21.23.135:8545"; //注意,不是127.0.0.1
//String url = "http://10.0.2.2:8545";
JSONRPCHttpClient client = new JSONRPCHttpClient(url);
Map<String, Object> map = new HashMap();
List paramsList = new ArrayList();
map.put("json-rpc", "2.0");
map.put("method", "web3_clientVersion");
map.put("params", paramsList);
map.put("id", "67");
String st = client.callString("web3_clientVersion", map);
Message msg = new Message();
msg.what =SHOW;
msg.obj = st;
handler.sendMessage(msg);
} catch (JSONRPCException e) {
// textview.setText("step wrong??");
e.printStackTrace();
}
}
}).start();
}
}



运行上述代码是出现异常 :
W/System.err: org.alexd.jsonrpc.JSONRPCException: Cannot convert result to String
at org.alexd.jsonrpc.JSONRPCClient.callString(JSONRPCClient.java:226)
at com.liyinan.mobileblockchain.MainActivity$2.run(MainActivity.java:69)
at java.lang.Thread.run(Thread.java:841)
Caused by: org.alexd.jsonrpc.JSONRPCException: IO error
at org.alexd.jsonrpc.JSONRPCHttpClient.doJSONRequest(JSONRPCHttpClient.java:133)
at org.alexd.jsonrpc.JSONRPCClient.doRequest(JSONRPCClient.java:94)
at org.alexd.jsonrpc.JSONRPCClient.callString(JSONRPCClient.java:223)
... 2 more
Caused by: org.apache.http.conn.HttpHostConnectException: Connection to http://10.21.23.135:8545 refused
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at org.alexd.jsonrpc.JSONRPCHttpClient.doJSONRequest(JSONRPCHttpClient.java:100)
... 4 more
Caused by: java.net.ConnectException: failed to connect to /10.21.23.135 (port 8545): connect failed: ECONNREFUSED (Connection refused)
at libcore.io.IoBridge.connect(IoBridge.java:114)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
at java.net.Socket.connect(Socket.java:843)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
... 11 more
Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
at libcore.io.Posix.connect(Native Method)
at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
at libcore.io.IoBridge.connect(IoBridge.java:112)
... 16 more

哪位大神能帮看下
...全文
595 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aqwmb 2021-03-09
  • 打赏
  • 举报
回复
在AndroidManifest.xml配置文件的<application>标签中直接插入(感谢junbs分享) android:usesCleartextTraffic="true"
bt侠 2018-07-30
  • 打赏
  • 举报
回复
String st = client.callString("web3_clientVersion", map); 报错信息显示你这里不能强转为string
Android小码家 2018-07-30
  • 打赏
  • 举报
回复
String st = client.callString("web3_clientVersion", map);
callString 为一个封装方法 内部的jSON解析出错 ,可能根本为null 用String接受就会报错,要看callString的具体实现,建议用Object接受比较稳妥。还有既然connect failed: ECONNREFUSED (Connection refused) 连接被拒绝了,你至少先判断一下返回码再接受数据吧?

80,354

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧