[英]Error converting result java.lang.NullPointerException: lock == null, Why tthis error?
This is the logcat 这是logcat
D/request!(1826): [mtd=empLog, request[cmp_id]=, request[user_name]=sureshsk_cepl, request[password]=ceplvalrep2014, request[remember]=1, Phone_type=Android]
I/Choreographer(1826): Skipped 39 frames! The application may be doing too much work on its main thread.
I/art(1826): Background sticky concurrent mark sweep GC freed 1612(81KB) AllocSpace objects, 0(0B) LOS objects, 19% free, 829KB/1026KB, paused 4.407ms total 114.250ms
W/System.err(1826): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused
W/System.err(1826): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
W/System.err(1826): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
W/System.err(1826): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
W/System.err(1826): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
W/System.err(1826): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err(1826): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err(1826): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
W/System.err(1826): at com.cepl.valrep.adapter.JSONParser.makeHttpRequest(JSONParser.java:52)
W/System.err(1826): at com.cepl.valrep.MainActivity$Login.doInBackground(MainActivity.java:120)
W/System.err(1826): at com.cepl.valrep.MainActivity$Login.doInBackground(MainActivity.java:1)
W/System.err(1826): at android.os.AsyncTask$2.call(AsyncTask.java:288)
W/System.err(1826): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(1826): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
W/System.err(1826): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(1826): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(1826): at java.lang.Thread.run(Thread.java:818)
W/System.err(1826): Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)
W/System.err(1826): at libcore.io.IoBridge.connect(IoBridge.java:124)
W/System.err(1826): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
W/System.err(1826): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:456)
W/System.err(1826): at java.net.Socket.connect(Socket.java:882)
W/System.err(1826): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
W/System.err(1826): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
W/System.err(1826): ... 15 more
W/System.err(1826): Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
W/System.err(1826): at libcore.io.Posix.connect(Native Method)
W/System.err(1826): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
W/System.err(1826): at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
W/System.err(1826): at libcore.io.IoBridge.connect(IoBridge.java:122)
W/System.err(1826): ... 20 more
E/Buffer Error(1826): Error converting result java.lang.NullPointerException: lock == null
E/JSON Parser(1826): Error parsing data org.json.JSONException: End of input at character 0 of
W/System.err(1826): java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.getInt(java.lang.String)' on a null object reference
W/System.err(1826): at com.cepl.valrep.MainActivity$Login.doInBackground(MainActivity.java:126)
W/System.err(1826): at com.cepl.valrep.MainActivity$Login.doInBackground(MainActivity.java:1)
W/System.err(1826): at android.os.AsyncTask$2.call(AsyncTask.java:288)
W/System.err(1826): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(1826): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
W/System.err(1826): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(1826): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(1826): at java.lang.Thread.run(Thread.java:818)
I/System.out(1826): Some error occurs
This is my JAVA code 这是我的JAVA代码
public class MainActivity extends Activity implements OnClickListener{
private EditText Edit_UserName,Edit_Password;
private Button Login;
private RadioButton Remember;
TextView textview;
HttpPost httppost;
StringBuffer buffer;
HttpResponse response;
HttpClient httpclient;
List<NameValuePair> nameValuePairs;
ProgressDialog dialog = null;
JSONParser jsonParser = new JSONParser();
private static String url_login = "http://localhost/valrep/php/request.php?c=employee";
private static final String TAG_SUCCESS = "success";
private static final String TAG_MESSAGE = "message";
static String mtd;
static String cmp_id;
static String login_username;
static String login_password;
String remember="0";
AsyncTask<Void, Void, Void> mRegisterTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Edit_UserName = (EditText)findViewById(R.id.txtUserName);
Edit_Password = (EditText)findViewById(R.id.txtDate);
Login = (Button) findViewById(R.id.btnLogin);
Remember = (RadioButton)findViewById(R.id.btnCheckin);
textview = (TextView)findViewById(R.id.textView1);
// Remember.setOnClickListener(this);
Login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnLogin:
login_username = Edit_UserName.getText().toString();
login_password = Edit_Password.getText().toString();
if (Remember.isChecked()) {
remember = "1";
}else {
remember = "0";
}
new Login().execute();
// httpclient=new DefaultHttpClient();
// httppost= new HttpPost(url_login);
}
}
class Login extends AsyncTask<String, String, String>{
boolean failure = false;
private JSONArray jsonarray=null;
@Override
protected String doInBackground(String... args) {
int success;
try{
nameValuePairs = new ArrayList<NameValuePair>();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("mtd", "empLog"));
params.add(new BasicNameValuePair("request[cmp_id]", ""));
params.add(new BasicNameValuePair("request[user_name]", login_username));
params.add(new BasicNameValuePair("request[password]", login_password));
params.add(new BasicNameValuePair("request[remember]", remember));
params.add(new BasicNameValuePair("Phone_type", "Android"));
// httppost.setEntity(new UrlEncodedFormEntity(params));
Log.d("request!", params.toString());
JSONObject json = jsonParser.makeHttpRequest(url_login, "POST", params);
// HttpResponse response = httpclient.execute(httppost);
//
// Log.d("request!",json.toString());
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
Toast.makeText(getApplicationContext(), "Successfully loggedIn", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(getApplicationContext(), "Wrong username or password", Toast.LENGTH_LONG).show();
}
}catch (Exception e) {
e.printStackTrace();
System.out.println("Some error occurs");
}
// TODO Auto-generated method stub
return null;
}
}
}
My JSON parser is 我的JSON解析器是
public class JSONParser
{
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
// function get json from url
// by making HTTP POST or GET mehtod
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if(method == "POST"){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
else if(method == "GET"){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
//Log.d("response string",json);
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
If you use localhost
in your android device it is referring to the actual device, if you want to access to your local computer, use your LAN IP address if your device is connected to your LAN network, or your internet IP if not. 如果您在android设备中使用
localhost
,则是指实际设备,如果要访问本地计算机,请在设备连接到LAN网络时使用LAN IP地址,否则请使用Internet IP。
If on the other hand, you are using Android emulator, change localhost
to 10.0.2.2
. 另一方面,如果您使用的是Android模拟器,
10.0.2.2
localhost
更改为10.0.2.2
。
PS: You are possibly missing a port in your url, depending on how you have configurated your server. PS:根据您配置服务器的方式,您可能在URL中缺少端口。
That should do the trick 这应该够了吧
in your code json
object is assigned as null because makeHttpRequest
is either returning null or failed to make connection. 代码中的
json
对象被分配为null,因为makeHttpRequest
返回null或建立连接失败。
JSONObject json = jsonParser.makeHttpRequest(url_login, "POST", params);
so this line will throw exception when you call any method by any reference that is pointing to null. 因此,当您通过指向null的任何引用调用任何方法时,此行将引发异常。
success = json.getInt(TAG_SUCCESS); // because json = null
replace localhost to localhost:your listening port number(ex:8080) 将localhost替换为localhost:您的监听端口号(例如:8080)
if your are running your app in emulator replace localhost to 10.0.2.2:your listening port number 如果您在模拟器中运行您的应用,请将localhost替换为10.0.2.2:您的监听端口号
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.