1

最近、私は Android アプリケーションを開発しています。私がやりたかったのは、.net WCF からアプリケーションに Web サービスを使用することです。

ここに私のクライアントコードがあります

import java.io.InputStream;<br>
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;<br>
import org.apache.http.HttpResponse;<br>
import org.apache.http.client.methods.HttpGet;<br>
import org.apache.http.impl.client.DefaultHttpClient;<br>
import org.json.JSONObject;<br>

import android.R.string;<br>
import android.os.Bundle;<br>
import android.app.Activity;<br>
import android.view.Menu;<br>
import android.view.View;<br>
import android.widget.TextView;<br>


public class MyPamIndex extends Activity {

    private final static String SERVICE_URI = "http://172.30.2.95:9000/JSON/MyPam.svc";
    private TextView NabVals;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_pam_index);


            NabVals = (TextView)findViewById(R.id.textView2);
    }
    public void OnRefreshClick(View button)
    {
         try {
             // Send GET request to <service>/GetVehicle/<plate>
             DefaultHttpClient httpClient = new DefaultHttpClient();
             HttpGet request = new HttpGet(SERVICE_URI + "/ProductID/" + "1");

             request.setHeader("Accept", "application/json");
             request.setHeader("Content-type", "application/json");

             HttpResponse response = httpClient.execute(request);
             HttpEntity responseEntity = response.getEntity();

             // Read response data into buffer
             char[] buffer = new char[(int)responseEntity.getContentLength()];
             InputStream stream = responseEntity.getContent();
             InputStreamReader reader = new InputStreamReader(stream);
             reader.read(buffer);
             stream.close();

             JSONObject vehicle = new JSONObject(new String(buffer));
             NabVals.setText(vehicle.getString("NabValue"));
             // Populate text fields


         } catch (Exception e) {
             e.printStackTrace();

         }
    }

アプリを実行すると、HttpResponse response = httpClient.execute(request); でエラーが発生します。フォーラム全体を検索しましたが、何も見つかりませんでした。既に Android マニフェスト ファイルを追加していますが、まだ機能していません。助けてください

これは私のマニフェストファイルです

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.core.mypam"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-permission android:name="anroid.permission.INTERNET"></uses-permission>
    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.core.mypam.MyPamIndex"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

「http://172.30.2.95:9000」は私のマシンの IP ではなく、同じ LAN 内の他の PC にあります。助けてください

4

1 に答える 1

0

UI スレッドでネットワーク要求を行っています。これはもはや許可されておらず、例外が発生します。コードを AsyncTask に移動する必要があります。GoogleNetworkOnMainで多数の例を参照してください。

于 2012-12-04T07:56:31.757 に答える