2017-10-20 16 views
0

私は書いているプログラムに簡単なコードを投稿します。ここに私の質問です。私は私のサーバーに接続していると思います。(これは私がこのオンラインで投稿しているので私は偽のサーバーアドレスに置き換えます)、私は実際にサーバーに変数を送信しているかどうかを知りたいと思います。私はこの文字列( "?systemid = demo & pwd = demo &理由= do%20something & qnumber = A36")を使用してPHPサーバーにデータを送信しています。これはテスト目的のためにハードコードされています。私の質問は、私は実際にデータを送信していますか? send()メソッドがないようです。私の無知を許してください。私はAndroidが初めてです。サーバーへのデータの送信

私はOutputStreamに書き込むときにもデータを送信していると私は考えました。

public class PrintTicketActivity extends AppCompatActivity { 

    private static final String TAG2 = "PrintTicketActivity"; 

    Context mContext; 
    Button mButtonA, mButtonB, mButtonC, mButtonD, mButtonE, mButtonF; 
    List<Button> mButtons; 
    List<PrintJob> mPrintJobs; 
    WebView mWebView; 
    int printJobNum = 1; 

    // here i'm initializing the variables with an arbitrary value so the compiler won't complain 
    // that they may have not been initialized in the button's onclick listeners 
    // these values are overwritten from sharedPreferences anyway.....the file will always exist unless there is a major problem 
    int numA, numB, numC, numD, numE, numF; 
    String buttonA, buttonB, buttonC, buttonD, buttonE, buttonF; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_print_ticket); 

     mContext = this; 
     mButtons = new ArrayList<>(); 
     mPrintJobs = new ArrayList<>(); 

     mButtonA = (Button) findViewById(R.id.button_a); 
     mButtonB = (Button) findViewById(R.id.button_b); 
     mButtonC = (Button) findViewById(R.id.button_c); 
     mButtonD = (Button) findViewById(R.id.button_d); 
     mButtonE = (Button) findViewById(R.id.button_e); 
     mButtonF = (Button) findViewById(R.id.button_f); 

     // add the buttons to the list so we can check later to see if any of the buttons has empty text 
     // and then hide the button if it is empty 
     mButtons.add(mButtonA); 
     mButtons.add(mButtonB); 
     mButtons.add(mButtonC); 
     mButtons.add(mButtonD); 
     mButtons.add(mButtonE); 
     mButtons.add(mButtonF); 


     // check for the start up file 
     File file = new File("data/data/com.myDomain.myProgram/shared_prefs/start.xml"); 

     if (file.exists()) { 

      // place text from preferences on the buttons 
      updateUI(); 

     } else { 
      Toast.makeText(mContext, "Something went wrong", Toast.LENGTH_SHORT).show(); 
     } 

     mButtonA.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       executeQueue(NUMBER_A, numA, "A", mButtonA); 
       new SendQueueToServer().execute(); 

      } 
     }); 
     mButtonB.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       executeQueue(NUMBER_B, numB, "B", mButtonB); 
      } 
     }); 
     mButtonC.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       executeQueue(NUMBER_C, numC, "C", mButtonC); 
      } 
     }); 
     mButtonD.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       executeQueue(NUMBER_D, numD, "D", mButtonD); 
      } 
     }); 
     mButtonE.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       executeQueue(NUMBER_E, numE, "E", mButtonE); 
      } 
     }); 
     mButtonF.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       executeQueue(NUMBER_F, numF, "F", mButtonF); 
      } 
     }); 
    } 

    private void executeQueue(String prefKey, int num, String category, Button button) { 

     printTicket(button.getText().toString(), category + num); 

     // increment the number after printing the ticket 
     ++num; 

     // update the number in the shared preferences 
     SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS, MODE_PRIVATE).edit(); 
     editor.putInt(prefKey, num); 
     editor.apply(); 

     // update the UI to get an updated version of the queue number 
     updateUI(); 
    } 

    private void updateUI() { 
     SharedPreferences preferences = getSharedPreferences(MY_PREFS, MODE_PRIVATE); 
     buttonA = preferences.getString(A, ""); 
     buttonB = preferences.getString(B, ""); 
     buttonC = preferences.getString(C, ""); 
     buttonD = preferences.getString(D, ""); 
     buttonE = preferences.getString(E, ""); 
     buttonF = preferences.getString(F, ""); 
     numA = preferences.getInt(NUMBER_A, 1); 
     numB = preferences.getInt(NUMBER_B, 1); 
     numC = preferences.getInt(NUMBER_C, 1); 
     numD = preferences.getInt(NUMBER_D, 1); 
     numE = preferences.getInt(NUMBER_E, 1); 
     numF = preferences.getInt(NUMBER_F, 1); 

     mButtonA.setText(buttonA); 
     mButtonB.setText(buttonB); 
     mButtonC.setText(buttonC); 
     mButtonD.setText(buttonD); 
     mButtonE.setText(buttonE); 
     mButtonF.setText(buttonF); 

     // if a button doesn't have anything assigned to it, hide the button 
     for (Button button : mButtons) { 
      if (button.getText().equals("")) { 
       button.setVisibility(View.GONE); 
      } 
     } 
    } 

    private void printTicket(String queueTitle, String queueCategory) { 
     // create a WebView object for printing 
     WebView webView = new WebView(mContext); 
     webView.setWebViewClient(new WebViewClient() { 

      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       return false; 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       Log.i(TAG2, "page finished loading " + url); 
       createWebPrintJob(view); 
       mWebView = null; 
      } 
     }); 

     String html = "<html><body><h2 style=\"text-align:center;font-size:60px\">" + queueTitle + "</h2><h1 style=\"text-align:center" + 
       ";font-size:200px\">" + 
       queueCategory + "</h1>"; 
     webView.loadDataWithBaseURL(null, html, "text/HTML", "UTF-8", null); 

     // Keep a reference to WebView object until you pass the PrintDocumentAdapter 
     // to the PrintManager 
     mWebView = webView; 
    } 

    @SuppressWarnings("deprecation") 
    private void createWebPrintJob(WebView webView) { 
     PrintManager printManager = (PrintManager) mContext.getSystemService(Context.PRINT_SERVICE); 

     // Get a print adapter instance 
     PrintDocumentAdapter printAdapter; 
     if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      printAdapter = webView.createPrintDocumentAdapter("print_job_num" + printJobNum); 
      printJobNum++; 
     } else { 
      printAdapter = webView.createPrintDocumentAdapter(); 
      printJobNum++; 
     } 

     // Create a print job with name and adapter instance 
     String jobName = getString(R.string.app_name) + " Document"; 
     PrintJob printJob = printManager.print(jobName, printAdapter, 
       new PrintAttributes.Builder().build()); 

     // save for status checking later 
     mPrintJobs.add(printJob); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     updateUI(); 
    } 


// @Override 
// public void onBackPressed() { 
//  // don't add superclass constructor 
//  // I am disabling the back button here 
// } 


    private class SendQueueToServer extends AsyncTask<String, String, String> { 

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

      OutputStream out = null; 
      String urlParameters = "?systemid=demo&pwd=demo&reason=do%20something&qnumber=A36"; 
      HttpsURLConnection connection = null; 

      try { 
       URL url = new URL("https://www.example.com/php"); 
       connection = (HttpsURLConnection) url.openConnection(); 
       connection.setRequestMethod("POST"); 
       connection.setDoOutput(true); 
       connection.connect(); 
       out = new DataOutputStream(connection.getOutputStream()); 

       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(out, "UTF-8")); 

       writer.write(urlParameters); 
       writer.flush(); 
       writer.close(); 

       Log.d(TAG2, " and the response is: " + connection.getResponseMessage()); 

       Log.d(TAG2, "you are connected and good to go"); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       assert connection != null; 
       connection.disconnect(); 
      } 
      return null; 
     } 
    } 
} 

答えて

0

URLパラメータを使用すると、GETリクエストを作成しようとしていると、これはHTTPのGETリクエストを作成するための適切な手順ではないことを示して見てみてください。 GETリクエストを行う場合は、OutputStreamWriterに何も書き込む必要はありません。

URL url; 
HttpURLConnection urlConnection = null; 
String urlParameters = "?systemid=demo&pwd=demo&reason=do%20something&qnumber=A36"; 

try { 
    url = new URL("https://www.example.com/php"+urlParameters); 

    urlConnection = (HttpURLConnection) url 
      .openConnection(); 

    //use this block of code in case you are looking for some response from your server 
    InputStream in = urlConnection.getInputStream(); 

    InputStreamReader isw = new InputStreamReader(in); 

    int data = isw.read(); 
    while (data != -1) { 
     char current = (char) data; 
     data = isw.read(); 
     System.out.print(current); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    if (urlConnection != null) { 
     urlConnection.disconnect(); 
    }  
} 
0

Retrofit Libraryを使用すると、サーバーにデータを送信できます。このライブラリを使用して、Serverと通信するのは非常に簡単です。

Android/Javaでこのライブラリを使用する方法については、http://square.github.io/retrofit/を参照してください。

関連する問題