Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android json获取问题WCF服务_Java_Android_Json_Wcf_Android Emulator - Fatal编程技术网

Java Android json获取问题WCF服务

Java Android json获取问题WCF服务,java,android,json,wcf,android-emulator,Java,Android,Json,Wcf,Android Emulator,我已经在localhost上创建了一个WCF服务,它在调用时返回一个json。我想在android客户端上获取json,但不知怎么的,它不起作用。我尝试从一个示例android教程站点获取一个json,它起作用了,但我自己的localhost WCF服务似乎不起作用 package com.example.usa; import java.util.ArrayList; import java.util.HashMap; import org.json.JSONArray; import o

我已经在localhost上创建了一个WCF服务,它在调用时返回一个json。我想在android客户端上获取json,但不知怎么的,它不起作用。我尝试从一个示例android教程站点获取一个json,它起作用了,但我自己的localhost WCF服务似乎不起作用

package com.example.usa;

import java.util.ArrayList;
import java.util.HashMap;

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

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;

public class Home extends Activity {
    // url to make request
    private static String url = "http://localhost:8732/Design_Time_Addresses/WcfServiceLibrary/Service1/GetDataUsingDataContract";
                               //http://localhost:8732/Design_Time_Addresses/WcfServiceLibrary/Service1/
    // JSON Node names
    private static final String TAG_CONTACTS = "contacts";
    private static final String TAG_ID = "id";
    private static final String TAG_NAME = "name";
    private static final String TAG_EMAIL = "email";
    private static final String TAG_ADDRESS = "address";
    private static final String TAG_GENDER = "gender";
    private static final String TAG_PHONE = "phone";
    private static final String TAG_PHONE_MOBILE = "mobile";
    private static final String TAG_PHONE_HOME = "home";
    private static final String TAG_PHONE_OFFICE = "office";
     public static JSONObject json  ;

    JSONArray contacts = null;



    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);
        final ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

        // Creating JSON Parser instance
        final JSONParser jParser = new JSONParser();

        // getting JSON string from URL
        new Handler().postDelayed(new Runnable() {



            @Override
            public void run() {

                Thread thread = new Thread()
                {
                    @Override
                    public void run() {
                        while(true) {
                            ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

                            // Creating JSON Parser instance
                            JSONParser jParser = new JSONParser();

                            // getting JSON string from URL
                            JSONObject json = jParser.getJSONFromUrl(url);

                            try {
                                // Getting Array of Contacts
                                contacts = json.getJSONArray(TAG_CONTACTS);

                                // looping through All Contacts
                                for(int i = 0; i < contacts.length(); i++){
                                    JSONObject c = contacts.getJSONObject(i);

                                    // Storing each json item in variable
                                    String id = c.getString(TAG_ID);
                                    String name = c.getString(TAG_NAME);
                                    String email = c.getString(TAG_EMAIL);
                                    String address = c.getString(TAG_ADDRESS);
                                    String gender = c.getString(TAG_GENDER);

                                    // Phone number is agin JSON Object
                                    JSONObject phone = c.getJSONObject(TAG_PHONE);
                                    String mobile = phone.getString(TAG_PHONE_MOBILE);
                                    String home = phone.getString(TAG_PHONE_HOME);
                                    String office = phone.getString(TAG_PHONE_OFFICE);


                                    Log.w("ID",id);
                                    Log.w("Name",name);
                                    Log.w("Email",email);
                                    Log.w("Gender",gender);
                                    Log.w("mobile",mobile);
                                    Log.w("home",home);
                                    Log.w("office",office);
                                    Log.w("address",address);



                                    // creating new HashMap
                                    HashMap<String, String> map = new HashMap<String, String>();

                                    // adding each child node to HashMap key => value
                                    map.put(TAG_ID, id);
                                    map.put(TAG_NAME, name);
                                    map.put(TAG_EMAIL, email);
                                    map.put(TAG_PHONE_MOBILE, mobile);

                                    // adding HashList to ArrayList
                                    contactList.add(map);
                                }
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }


                        }
                    }
                };

                thread.start();




                //
                finish();
            }
        }, 0);





    }

}
package com.example.usa;
导入java.util.ArrayList;
导入java.util.HashMap;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.os.Handler;
导入android.util.Log;
公营家庭推广活动{
//发出请求的url
专用静态字符串url=”http://localhost:8732/Design_Time_Addresses/WcfServiceLibrary/Service1/GetDataUsingDataContract";
//http://localhost:8732/Design_Time_Addresses/WcfServiceLibrary/Service1/
//JSON节点名称
专用静态最终字符串标记_CONTACTS=“CONTACTS”;
私有静态最终字符串标记\u ID=“ID”;
私有静态最终字符串标记_NAME=“NAME”;
私有静态最终字符串标记\u EMAIL=“EMAIL”;
私有静态最终字符串标记_ADDRESS=“ADDRESS”;
私有静态最终字符串标记_GENDER=“GENDER”;
专用静态最终字符串标记_PHONE=“PHONE”;
专用静态最终字符串标记\u PHONE\u MOBILE=“MOBILE”;
专用静态最终字符串标记\u PHONE\u HOME=“HOME”;
专用静态最终字符串标记\u PHONE\u OFFICE=“OFFICE”;
公共静态JSONObject json;
JSONArray联系人=null;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
最终ArrayList联系人列表=新ArrayList();
//创建JSON解析器实例
final-JSONParser-jParser=new-JSONParser();
//从URL获取JSON字符串
new Handler().postDelayed(new Runnable()){
@凌驾
公开募捐{
线程线程=新线程()
{
@凌驾
公开募捐{
while(true){
ArrayList contactList=新建ArrayList();
//创建JSON解析器实例
JSONParser jParser=新的JSONParser();
//从URL获取JSON字符串
JSONObject json=jParser.getJSONFromUrl(url);
试一试{
//获取联系人数组
contacts=json.getJSONArray(TAG_contacts);
//通过所有触点循环
对于(int i=0;ivalue
地图放置(标签标识,标识);
地图放置(标签名称、名称);
地图放置(标签、电子邮件、电子邮件);
地图放置(标签、手机、手机);
//将哈希列表添加到ArrayList
联系人列表。添加(地图);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
};
thread.start();
//
完成();
}
}, 0);
}
}
这个代码抛出这个

10-04 13:31:30.402: D/dalvikvm(3043): GC_FOR_ALLOC freed 15K, 4% free 4157K/4292K, paused 39ms, total 48ms
10-04 13:31:30.422: I/dalvikvm-heap(3043): Grow heap (frag case) to 5.637MB for 1536016-byte allocation
10-04 13:31:30.592: D/dalvikvm(3043): GC_FOR_ALLOC freed <1K, 3% free 5656K/5796K, paused 160ms, total 160ms
10-04 13:31:32.562: W/System.err(3043): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:8732 refused
10-04 13:31:32.592: W/System.err(3043):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
10-04 13:31:32.592: W/System.err(3043):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
10-04 13:31:32.602: W/System.err(3043):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
10-04 13:31:32.602: W/System.err(3043):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
10-04 13:31:32.602: W/System.err(3043):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
10-04 13:31:32.602: W/System.err(3043):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-04 13:31:32.643: W/System.err(3043):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
10-04 13:31:32.643: W/System.err(3043):     at com.example.usa.JSONParser.getJSONFromUrl(JSONParser.java:38)
10-04 13:31:32.643: W/System.err(3043):     at com.example.usa.Home$1$1.run(Home.java:66)
10-04 13:31:32.643: W/System.err(3043): Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 8732): connect failed: ECONNREFUSED (Connection refused)
10-04 13:31:32.682: W/System.err(3043):     at libcore.io.IoBridge.connect(IoBridge.java:114)
10-04 13:31:32.712: W/System.err(3043):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
10-04 13:31:32.712: W/System.err(3043):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
10-04 13:31:32.733: W/System.err(3043):     at java.net.Socket.connect(Socket.java:842)
10-04 13:31:32.733: W/System.err(3043):     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
10-04 13:31:32.733: W/System.err(3043):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
10-04 13:31:32.742: W/System.err(3043):     ... 8 more
10-04 13:31:32.772: W/System.err(3043): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
10-04 13:31:32.812: W/System.err(3043):     at libcore.io.Posix.connect(Native Method)
10-04 13:31:32.812: W/System.err(3043):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
10-04 13:31:32.812: W/System.err(3043):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
10-04 13:31:32.812: W/System.err(3043):     at libcore.io.IoBridge.connect(IoBridge.java:112)
10-04 13:31:32.812: W/System.err(3043):     ... 13 more
10-04 13:31:32.854: E/Buffer Error(3043): Error converting result java.lang.NullPointerException: lock == null
10-04 13:31:32.917: E/JSON Parser(3043): Error parsing data org.json.JSONException: End of input at character 0 of 
10-04 13:31:32.917: W/dalvikvm(3043): threadid=11: thread exiting with uncaught exception (group=0x414c4700)
10-04 13:31:32.917: E/AndroidRuntime(3043): FATAL EXCEPTION: Thread-96
10-04 13:31:32.917: E/AndroidRuntime(3043): java.lang.NullPointerException
10-04 13:31:32.917: E/AndroidRuntime(3043):     at com.example.usa.Home$1$1.run(Home.java:70)
10-04 13:31:35.052: I/Choreographer(3043): Skipped 1034 frames!  The application may be doing too much work on its main thread.
10-04 13:31:38.592: I/Choreographer(3043): Skipped 37 frames!  The application may be doing too much work on its main thread.
10-04 13:36:33.602: I/Process(3043): Sending signal. PID: 3043 SIG: 9
10-04 13:31:30.402:D/dalvikvm(3043):释放15K的所有元素的GC,4%的释放4157K/4292K,暂停39ms,总计48ms
10-04 13:31:30.422:I/dalvikvm堆(3043):为1536016字节分配将堆(frag案例)增长到5.637MB

10-04 13:31:30.592:D/dalvikvm(3043):GC_FOR_ALLOC freed您正试图连接到
localhost
,这意味着android设备本身。您可能正在测试所在的本地网络的桌面上运行web服务,因此需要通过计算机的IP访问web服务

在windows中,打开cmd.exe,运行
ipconfig
,然后找到您的IPv4地址,然后用该地址替换
localhost

它应该看起来像,
private static String url = "http://192.168.1.2:8732/Design_Time_Addresses/WcfServiceLibrary/Service1/GetDataUsingDataContract";