2017-06-14 1 views
0

J'essaie de créer un nouveau document dans la base de données cloudant en utilisant la demande de post J'ai joint mon code android, s'il vous plaît laissez-moi savoir ce qu'il faut faire pour créer un document et insérer deux J'ai joint le code pour lequel je reçois 403 comme réponse.créer un document dans cloudant en utilisant la demande de poste

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Base64; 
import android.util.Log; 
import android.view.View; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 

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

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


public class MainActivity extends AppCompatActivity { 
private String url = "https:bluemix.cloudant.com/databasename/documentname"; 

private String REV; 

enter code here 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void postreq(View view) { 
    HashMap<String, Object> map = new HashMap<String, Object>(); 
    //data in document 
    map.put("_id", "123"); 
    map.put("value1", "1567"); 
    map.put("value2", "1545"); 

    JsonObjectRequest jar1 = new JsonObjectRequest(Request.Method.POST, url, new JSONObject(map), new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      try { 
       JSONObject jsonObject = new JSONObject(response.toString()); 
       REV = jsonObject.getString("rev"); 
      } catch (JSONException e) { 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e("Json Error Res: ", "" + error); 
     } 
    }){ 
     @Override 
     public Map<String, String> getHeaders() { 
      Map<String, String> params = new HashMap<String, String>(); 
      String credentials = "abcd:XYZ"; 
            //key:Password 
      String auth = "Basic " 
        + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); 
      // Log.e("qqqq", auth); 
      params.put("Authorization", auth); 
      params.put("Content-Type", "application/json"); 
      params.put("Accept","application/json"); 


      return params; 
     } 
    }; 
    RequestQueue req = Volley.newRequestQueue(this); 
    req.add(jar1); 
}} 

Merci à l'avance.

Répondre

1

Vous ne savez pas si c'est une faute de frappe dans la question, mais votre URL semble mal formée. vous voudrez peut-être confirmer l'URL. Lors de la création d'un nouveau document, l'URL à POST doit être sous la forme https://$ACCOUNT.cloudant.com/$DATABASE (votre URL contient un /documentname supplémentaire).

Voir https://console.ng.bluemix.net/docs/services/Cloudant/api/document.html#create

+0

l'URL utilisée dans le programme est correct, je viens d'éditer, il est sous forme « https: // XYZ (nom d'utilisateur) -bluemix.cloudant.com/databasename/documentname~~V~~singular~~3rd » –

+1

si vous voulez Pour créer un document nommé, vous devez effectuer une demande PUT (https://console.ng.bluemix.net/docs/services/Cloudant/api/document.html#update). Pour les requêtes POST, votre URL ne doit pas contenir le '/ documentname' (https://console.ng.bluemix.net/docs/services/Cloudant/api/document.html#create) –