2016-07-21 16 views
0

私はjson形式でサーバーからすべてのユーザーデータを取得しようとしています。 PHPはコードをクールに生成しますが、私はokttp Responseですべてのjsonを取得できません。実際にはjsonの一部だけをロードしているわけではありません。OkHttp3がサーバーからすべてのjsonデータをロードしない

プラス:私はこのコードを使用する理由は、私はログインプロセスでサーバーからすべてのユーザーデータを取りたいです。ここ は

import android.os.AsyncTask; 
import android.util.Log; 

import com.example.android.shopping.Helper.Tags; 
import com.example.android.shopping.Model.Suggestion; 
import com.example.android.shopping.Model.product; 
import com.example.android.shopping.Model.user; 



import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import okhttp3.MultipartBody; 
import okhttp3.OkHttpClient; 
import okhttp3.Request; 
import okhttp3.RequestBody; 
import okhttp3.Response; 

/** 
* Created by Android on 7/21/2016. 
*/ 
public class SelectAll_INFO_NetworkCallTask extends AsyncTask <String,Void,String>{ 
    public static List<product> listOfProduct=new ArrayList<>(); 
    public static List<Suggestion> listOfSuggestion=new ArrayList<>(); 
    public static user myUser=new user(); 


    public user getUser=new user(); 
    private OkHttpClient client=new OkHttpClient(); 
    String Result=""; 
    public SelectAll_INFO_NetworkCallTask(user user) 
    { 
     this.getUser = user; 
    } 

    @Override 
    protected String doInBackground(String... params) { 

     try { 
      RequestBody requestBody; 
      requestBody = new MultipartBody.Builder() 
        .setType(MultipartBody.FORM) 
        .addFormDataPart("action", getUser.getStatus()) 
        .addFormDataPart("userId",String.valueOf(getUser.getUsId())) 
        .build(); 

      Request request = new Request.Builder() 
        .url(Tags.SelectAllAddress) 
        .post(requestBody) 
        .build(); 

      Response response = client.newCall(request).execute(); 

      Result=response.body().string(); 

      return Result; 

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


     return null; 
    } 

    @Override 
    protected void onPostExecute(String o) { 
     super.onPostExecute(o); 

     Log.d("Output is:",o); 


    } 
} 

で私のコードであり、これは私はそれを呼び出す行う方法です:

public void RegForm(View view) 
    { 
    /* Intent intent=new Intent(this,RegisterUserActivity.class); 
     startActivity(intent);*/ 
     user myUser=new user(); 
     myUser.setStatus("palt"); 
     myUser.setUsId(22); 
     SelectAll_INFO_NetworkCallTask infoCallTask=new SelectAll_INFO_NetworkCallTask(myUser); 
     infoCallTask.execute(); 
    } 

ともthis is the expected and gotten data i shared on gist

+0

どのようにデータを確認していますか? – Bryan

+0

私はlogcatでデータをチェックしています。私はLog.dでデータを表示することができます( "Output is:"、o); inPostExecuteで – AndroidDev

答えて

1

まあ最初。 notはOkHttpでAsyncTaskを使用する必要があります。 OkHttpには独自の非同期コールバックがあります。

client.newCall(request).enqueue(new Callback() { 

    @Override 
    public void onFailure(Call call, IOException exception) { 
     exception.printStackTrace(); 
    } 

    @Override 
    public void onResponse(Call call, Response response) { 
     // Handle response 
    } 

} 

第2に、質問に答えてください。 logcatには、デバイスに依存する最大メッセージ出力があります。したがって、その最大値よりも長い文字列を出力すると、切り捨てられます。したがって、OkHttpは応答の全体を受信して​​います.logcatはすべてのメッセージを1つのメッセージに表示することはできません。

関連する問題