2017-12-14 12 views
-2

私はnodejsサーバに投稿しようとしているアンドロイドのクライアント側を持っています。 と私はここに404 を得続けるには、私のクライアント側です:JsonのノードへのAndroidポストリクエスト - 404

routes.js: 
'use strict'; 

const auth = require('basic-auth'); 
const jwt = require('jsonwebtoken'); 

const register = require('./functions/register'); 
const login = require('./functions/login'); 
const profile = require('./functions/profile'); 
const password = require('./functions/password'); 
const config = require('./config/config.json'); 
//var bodyParser = require('body-parser'); 
module.exports = router => { 

    router.get('/', (req, res) =>{ 

     res.end('Welcome to Learn2Crack !')}); 

    router.post('/auth', (req, res) => { 
     var temp3=req.body; 
     var temp=req.body.name; 
     var temp2=req.body.pass; 
     console.log(temp3); 
     console.log(temp); 
     console.log(temp2); 
      //.catch(err => res.status(err.status).json({ message: err.message })); 
     res.end('im a dush '+temp2); 
    }); 

server.js:

package com.example.shanijoffe.hungry_monkey; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.JsonReader; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.os.AsyncTask; 
import android.widget.Toast; 

import com.loopj.android.http.AsyncHttpClient; 
import com.loopj.android.http.AsyncHttpResponseHandler; 
import com.squareup.okhttp.OkHttpClient; 
import com.stormpath.sdk.Stormpath; 
import com.stormpath.sdk.StormpathConfiguration; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
import java.io.UnsupportedEncodingException; 
import java.net.CookieHandler; 
import java.net.CookieManager; 
import java.net.CookiePolicy; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.ProtocolException; 
import java.net.URL; 
import java.net.URLEncoder; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 


import java.util.HashMap; 
import java.util.Map; 

import javax.net.ssl.HttpsURLConnection; 

import cz.msebera.android.httpclient.Header; 
import cz.msebera.android.httpclient.HttpResponse; 
import cz.msebera.android.httpclient.NameValuePair; 
import cz.msebera.android.httpclient.client.ClientProtocolException; 
import cz.msebera.android.httpclient.client.HttpClient; 
import cz.msebera.android.httpclient.client.entity.UrlEncodedFormEntity; 
import cz.msebera.android.httpclient.client.methods.HttpPost; 
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient; 
import cz.msebera.android.httpclient.message.BasicNameValuePair; 

import static com.loopj.android.http.AsyncHttpClient.log; 

public class MainActivity extends AppCompatActivity { 


    EditText user_name_edit; 
    EditText password_edit; 
    Button loginButton; 
    String user; 
    String user_pass; 
    static final int CODE_REQ=1; 
    private static final String TAG = "MyActivity"; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     user_name_edit=(EditText)findViewById(R.id.txt_usrname); 
     password_edit=(EditText)findViewById(R.id.txt_password); 
     loginButton=(Button)findViewById(R.id.btn_login); 

     Log.i(TAG,"before connection"); 


    } 
     public void OnClick(final View view) throws IOException { 
      view.setEnabled(false); 
      user = user_name_edit.getText().toString(); 
      user_pass = password_edit.getText().toString(); 
      log.i("hi", "sup"); 
      new SendPostRequest().execute(); 

      // log.i("our s is :", ss.toString()); 
      int exist_user = 0; 
      exist_user = 1; 
      if (exist_user == 1) { 
       Intent i = new Intent(this, ExistUserHomePage.class); 
       String s = "משתשמש קיים "; 
       i.putExtra("myString", s); 
       startActivityForResult(i, CODE_REQ); 
      } 
     } 

    public class SendPostRequest extends AsyncTask<String, Void, String> { 
     protected void onPreExecute(){} 
     protected String doInBackground(String... arg0) { 
      try { 
       log.i("in doInBackground ","1"); 
       URL url = new URL("https://rocky-thicket-82184.herokuapp.com/api/v1/auth"); // here is your URL path 
       JSONObject postDataParams = new JSONObject(); 
       postDataParams.put("name",user); 
       postDataParams.put("pass",user_pass); 
       Log.e("params",postDataParams.toString()); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       int responseCode=conn.getResponseCode(); 
       log.i("responseCode is:", String.valueOf(responseCode)); 
       conn.setReadTimeout(15000 /* milliseconds */); 
       conn.setConnectTimeout(15000 /* milliseconds */); 
       conn.setRequestMethod("POST"); 
       conn.setDoInput(true); 
       conn.setDoOutput(true); 
       OutputStream os = conn.getOutputStream(); 
       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(os, "UTF-8")); 
       writer.write(getPostDataString(postDataParams)); 
       writer.flush(); 
       writer.close(); 
       os.close(); 
       log.i("kokoko","koko"); 

       if (responseCode == HttpsURLConnection.HTTP_OK) { 
        BufferedReader in=new BufferedReader(new 
          InputStreamReader(
          conn.getInputStream())); 
        StringBuffer sb = new StringBuffer(""); 
        String line=""; 
        while((line = in.readLine()) != null) { 
         sb.append(line); 
         break; 
        } 
        in.close(); 
        return sb.toString(); 
       } 
       else { 
        return new String("false : "+responseCode); 
       } 
      } 
      catch(Exception e){ 
       return new String("Exception: " + e.getMessage()); 
      } 
     } 
     @Override 
     protected void onPostExecute(String result) { 
      Toast.makeText(getApplicationContext(), result, 
        Toast.LENGTH_LONG).show(); 
     } 
    } 
    public String getPostDataString(JSONObject params) throws Exception { 
     StringBuilder result = new StringBuilder(); 
     boolean first = true; 
     Iterator<String> itr = params.keys(); 
     while(itr.hasNext()){ 
      String key= itr.next(); 
      Object value = params.get(key); 
      if (first) 
       first = false; 
      else 
       result.append("&"); 
      result.append(URLEncoder.encode(key, "UTF-8")); 
      result.append("="); 
      result.append(URLEncoder.encode(value.toString(), "UTF-8")); 
     } 
     return result.toString(); 
    } 
} 

、ここでは、私のサーバーサイドNodejsある

'use strict'; 

const express = require('express');   
const app  = express();     
const bodyParser = require('body-parser'); 
const logger  = require('morgan'); 
const router  = express.Router(); 
const port  = process.env.PORT || 3000; 

app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 
app.use(logger('dev')); 

require('./routes')(router); 
app.use('/api/v1', router); 

app.listen(port); 

console.log(App Runs on ${port}); 

今、私のポストリクエストをテストするために郵便配達員を使っていた。しかし、アンドロイドスタジオから私は404を取得し続ける。 私は何かが不足していますか? 誰かがここでいくつかの光を照らすことができます...?ここ

server logs

一部logcatプリントされています:ここ

は、サーバー側からのログです

2-14 11:55:44.847 1306-1306/? W/SurfaceFlinger: couldn't log to binary event log: overflow. 
12-14 11:55:47.348 5133-5133/com.example.shanijoffe.hungry_monkey W/IInputConnectionWrapper: finishComposingText on inactive InputConnection 
12-14 11:55:47.350 1371-1424/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 1269717 , only wrote 1269360 
12-14 11:55:49.849 5133-5133/com.example.shanijoffe.hungry_monkey I/hi: sup 
12-14 11:55:49.849 1686-1700/system_process I/ActivityManager: START u0 {cmp=com.example.shanijoffe.hungry_monkey/.ExistUserHomePage (has extras)} from uid 10088 on display 0 
12-14 11:55:49.849 5133-5149/com.example.shanijoffe.hungry_monkey I/in doInBackground: 1 
12-14 11:55:49.850 5133-5149/com.example.shanijoffe.hungry_monkey E/params: {"name":"ss","pass":"sws"} 
12-14 11:55:49.853 5133-5149/com.example.shanijoffe.hungry_monkey D/NetworkSecurityConfig: No Network Security Config specified, using platform default 
12-14 11:55:50.171 5133-5148/com.example.shanijoffe.hungry_monkey D/EGL_emulation: eglMakeCurrent: 0x9dd85240: ver 2 0 (tinfo 0x9dd83240) 
12-14 11:55:50.602 5133-5133/com.example.shanijoffe.hungry_monkey W/IInputConnectionWrapper: finishComposingText on inactive InputConnection 
12-14 11:55:50.621 5133-5149/com.example.shanijoffe.hungry_monkey I/responseCode is:: 404 
12-14 11:55:50.677 1686-1709/system_process I/ActivityManager: Displayed com.example.shanijoffe.hungry_monkey/.ExistUserHomePage: +774ms 
12-14 11:55:51.135 5133-5148/com.example.shanijoffe.hungry_monkey D/EGL_emulation: eglMakeCurrent: 0x9dd85240: ver 2 0 (tinfo 0x9dd83240) 
12-14 11:55:51.321 1306-1306/? W/SurfaceFlinger: couldn't log to binary event log: overflow. 
12-14 11:55:53.036 1371-1425/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 1813461 , only wrote 1542240 
12-14 11:55:54.201 1686-1686/system_process W/WindowManager: Attempted to remove non-existing token: [email protected] 
12-14 11:55:54.201 5133-5148/com.example.shanijoffe.hungry_monkey D/EGL_emulation: eglMakeCurrent: 0x9dd85240: ver 2 0 (tinfo 0x9dd83240) 
12-14 11:56:14.336 2282-2282/com.google.android.googlequicksearchbox:search I/GrammarCompilationSvcCt: #startService for null, APP_NAMES. 
12-14 11:56:14.349 2282-5160/com.google.android.googlequicksearchbox:search I/ContextCompilationHandl: Compiling grammar for: en-US, type=APP_NAMES 
12-14 11:56:14.352 2282-5160/com.google.android.googlequicksearchbox:search I/ContextCompilationHandl: No grammar compilation resources for VOICE_ACTIONS_COMPILER, aborting. 
12-14 11:56:42.858 2282-2282/com.google.android.googlequicksearchbox:search I/GrammarCompilationSvcCt: #startService for null, APP_NAMES. 
12-14 11:56:42.866 2282-5161/com.google.android.googlequicksearchbox:search I/ContextCompilationHandl: Compiling grammar for: en-US, type=APP_NAMES 
12-14 11:56:42.870 2282-5161/com.google.android.googlequicksearchbox:search I/ContextCompilationHandl: No grammar compilation resources for VOICE_ACTIONS_COMPILER, aborting. 
12-14 11:57:06.904 1377-3736/? D/WVCdm: Instantiating CDM. 
12-14 11:57:06.905 1377-3736/? I/WVCdm: CdmEngine::OpenSession 
12-14 11:57:06.905 1377-3736/? I/WVCdm: Level3 Library 4464 Sep 10 2016 21:49:53 
12-14 11:57:06.906 1377-3736/? W/WVCdm: Could not load liboemcrypto.so. Falling back to L3. dlopen failed: library "liboemcrypto.so" not found 
12-14 11:57:06.911 1377-3736/? I/WVCdm: CdmEngine::QueryKeyControlInfo 
12-14 11:57:06.911 1377-3736/? I/WVCdm: CdmEngine::GenerateKeyRequest 
+0

なぜ関連性の高いログキャットを多く、関連性のないログキャットを少なくしていないのですか? – Will

+0

'/ api/v1/auth'ルートを' POST 'するのではなく 'GET'しているようです。 – Will

+0

私のコードでGETを使用しているのはどこですか? –

答えて

0

HttpURLConnection.getResponseCodeは、暗黙的に開始して行いますconnect方法その親クラスURLConnection年代を呼び出します。デフォルトのGETメソッドを持つHTTPリクエストHttpURLConnectionインスタンスを設定してPOSTを行う前にこの呼び出しを行っているので、サーバーの/api/v1/authハンドラにgetハンドラが指定されているため、接続は接続されて404になります。

関連する問題