0

渡さなければならない場所でWebサービス呼び出しを行おうとしています

login.php?message=[{"email":"mikeymike@mouse.com","password":"tiger"}]

このように二重引用符をエスケープするためにバックスラッシュを使用しました

String weblink = "login.php?message=[{\"email\":\"mikeymike@mouse.com\",\"password\":\"tiger\"}]";

しかし、私はまだエラーが発生しています。二重引用符でデータを必要としない他のWebサービスへの呼び出しを試みましたが、正常に動作するので、問題はこれからだと確信しています。また、Java.lang例外が発生します

java.lang.Exception  Indicates a serious configuration error.DateParseException An exception to indicate an error parsing a date string.  DestroyFailedException Signals that the destroy() method failed         

編集: URLEncoder と JSON オブジェクトを使用してみましたが、まだエラーが発生します

ここに残りのコードがあります

String HOST = "http://62.285.107.329/disaster/webservices/";

 String weblink = "login.php?message=[{\"email\":\"mikeymike@mouse.com\",\"password\":\"tiger\"}]";
String result = callWebservice(weblink);

 public String callWebservice(String weblink) {
    String result = "";
    try {

        HttpParams httpParameters = new BasicHttpParams();
        int timeoutConnection = 7500;
        HttpConnectionParams.setConnectionTimeout(httpParameters,
                timeoutConnection);
        int timeoutSocket = 7500;
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
        HttpClient client = new DefaultHttpClient(httpParameters);
        HttpGet request = new HttpGet();
        URI link = new URI(HOST + weblink);
        request.setURI(link);
        HttpResponse response = client.execute(request);

        BufferedReader rd = new BufferedReader(new InputStreamReader(
                response.getEntity().getContent()));
        result = rd.readLine();

    } catch (Exception e1) {
        e1.printStackTrace();
        result = "timeout";
    }
    return result;
}

また、Web サービスは JSON オブジェクトを返すため、これもエラーの原因になる可能性がありますか?

4

4 に答える 4

5

これを手動で試してエラーが発生する代わりに、 JSONObjectクラスと UrlEncoderを組み合わせて使用​​しないでください。

 JSONObject json = new JSONObject();
 json.put("email","mikeymike@mouse.com" );
 json.put("password", "tiger");
 String s = "login.php?message=" + UrlEncoder.encode(json.toString());
于 2012-11-09T21:59:48.363 に答える
0

すべての人にお詫びしますが、JSON オブジェクトを返すため、Web サービスを間違った方法で使用しようとしていたことが問題のようです。

これに遭遇する可能性のある人のためにこれを行う適切な方法は、以下のコードにあります

String str="url";
try{
    URL url=new URL(str);
    URLConnection urlc=url.openConnection();
    BufferedReader bfr=new BufferedReader(new InputStreamReader(urlc.getInputStream()));
    String line;
    while((line=bfr.readLine())!=null)
    {
    JSONArray jsa=new JSONArray(line);
    for(int i=0;i<jsa.length();i++)
       {
       JSONObject jo=(JSONObject)jsa.get(i);
                    title=jo.getString("deal_title");  //tag name "deal_title",will return value that we save in title string
                des=jo.getString("deal_description");
   }
}
catch(Exeption e){
}

この答えはから得られました

Androidを介してjson Webサービスを呼び出す方法

于 2012-11-11T20:52:39.167 に答える
0

Web サービスと通信する場合、データをURL エンコードする必要があります。あなたの場合、url エンコーディングは に置き換え"られ%22ますが、 などの他の特殊文字を追加する%と、エンコーディングはこれらもキャプチャします。このための Java クラスが JDK にあり、これはURLEncoderと呼ばれます。

したがって、基本的には、次URLEncoder.encode()のように を使用して文字列を準備することです。

String weblink = URLEncoder.encode("login.php?message=[{\"email\":\"mikeymike@mouse.com\",\"password\":\"tiger\"}]");

文字列がエンコードされたので、それをサーバーに送信して、意味を理解させることができるはずです。

于 2012-11-09T22:05:06.140 に答える
0

%22次のように代わりに使用する必要があります"login.php?message=[{%22email%22:%22mikeymike@mouse.com%22,%22password%22:%22tiger%22}]

"は URL で有効な文字ではありません。

より一般的な解決策は、使用することですURLEncoder.encode("login.php?message=[{\"email\":\"mikeymike@mouse.com\",\"password\":\"tiger\"}]", "UTF8")

于 2012-11-09T21:58:52.327 に答える