私は、Webサービスを使用してJSONを介してデータを取得するAndroidアプリケーションに取り組んでいます。以下は、アプリにログインするために使用している JSON 文字列です。パラメーター、wsfunction、構文はすべてチェックされ、正しいことがわかりました。
MainActivity.java
String loginjson = "{\"userDetails\":[{\"username\":"
+"\""
+username.getText().toString().trim()
+"\",\"password\":"
+"\""
+password.getText().toString()
+"\",\"ipaddress\":"
+"\""
+Constants.ipaddress
+"\",\"lastaccess\":\"0\"}],\"wsfunction\":\"user_authentication\"}";
Constants.sercall.servercall(loginjson);
また、サーバーへの要求とサーバーからの応答のロジックが記述されているコードもここにあります。
サーバーコール.java
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import android.util.Log;
public class Servercalls {
public String response_str="";
public HttpClient httpclient = new DefaultHttpClient();
public HttpPost httppost = new HttpPost(url); //PHP webservice url
public void servercall(String jsonstring){
try {
Log.d("Request to server",jsonstring);
JSONArray postjson=new JSONArray();
postjson.put(jsonstring);
httppost.setHeader("json",jsonstring);
httppost.getParams().setParameter("jsonpost",postjson);
HttpResponse response;
response = httpclient.execute(httppost);
if(response != null){
InputStream is = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line="";
while ((line = reader.readLine()) != null) {
response_str=line;
Log.e("Response from server",response_str);
}
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
Log.e("cpexception", "Error in client protocol" + e.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection "+ e.toString());
}
}
}
次のように出力しています。
{"error":1,"msg":"サービスが指定されていません"}
サーバーから適切な応答を得るのを手伝ってください....