Вопрос по http-put, android, http – Http Put Request

0

Я использую HttpPut для связи с сервером в Android, код ответа, который я получаю, - 500. После разговора с парнем на сервере, он сказал, подготовьте строку, как показано ниже, и отправьте.

{& Quot; ключ & Quot;: & Quot; значение & Quot;, & Quot; ключ & Quot;: & Quot; значение & Quot;}

теперь я совершенно запутался, что куда мне добавить эту строку в моем запросе.

Пожалуйста, помогите мне.

Из соображений безопасности следует избегать использования методов Put и Delete. PUT может быть опасным, если он не заблокирован должным образом. jsaye

Ваш Ответ

2   ответа
1

Не уверен, что это ответит на твой вопрос, но Я лично столкнулся с этим при попытке отправить URI данных для анимированного GIF-файла в запросе PUT, отформатированном в JSON, но URI данных был слишком длинным. Возможно, вы отправляете слишком много информации одновременно.

8

d взаимодействовать со службой WCF и обновлять определенную запись. Поначалу мне было очень трудно разобраться, в основном из-за того, что я недостаточно знал оHTTP протоколы, но я смог создатьPUT используя следующее:

    URL url = new URL("http://(...your service...).svc/(...your table name...)(...ID of record trying to update...)");

    //--This code works for updating a record from the feed--
    HttpPut httpPut = new HttpPut(url.toString());
    JSONStringer json = new JSONStringer()
    .object() 
       .key("your tables column name...").value("...updated value...")
    .endObject();

    StringEntity entity = new StringEntity(json.toString());
    entity.setContentType("application/json;charset=UTF-8");//text/plain;charset=UTF-8
    entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
    httpPut.setEntity(entity); 

    // Send request to WCF service 
    DefaultHttpClient httpClient = new DefaultHttpClient();

    HttpResponse response = httpClient.execute(httpPut);                     
    HttpEntity entity1 = response.getEntity(); 

    if(entity1 != null&&(response.getStatusLine().getStatusCode()==201||response.getStatusLine().getStatusCode()==200))
    {
         //--just so that you can view the response, this is optional--
         int sc = response.getStatusLine().getStatusCode();
         String sl = response.getStatusLine().getReasonPhrase();
    }
    else
    {
         int sc = response.getStatusLine().getStatusCode();
         String sl = response.getStatusLine().getReasonPhrase();
    }

При этом сказано, что есть более простой вариант - использовать библиотеку, которая будет генерировать методы обновления, чтобы вы могли обновлять запись без необходимости писать код вручную, как я делал выше. 2 библиотеки, которые кажутся общими:odata4j а такжеrestlet. Хотя я не смог найти ясного простого учебника дляodata4j есть один дляrestlet это действительно приятно:http: //weblogs.asp.net/uruit/archive/2011/09/13/accessing-odata-from-android-using-restlet.aspx CommentPosted = истина # commentmessage

@ kongkea Есть несколько способов анализа данных json, чтобы получить из них то, что вы хотите. Вотприме cking24343
Ваш код работал на меня, спасибо. Я уверен, что этот код можно оптимизировать? Eugene van der Merwe
@ cking24343 мое приложение отправляет данные через метод HttpPut. Когда сервер получает запрос, он отвечает как данные json. Я не знаю, как получить данные от JSON. пожалуйста, скажите мне.КО kongkea
Извините, я не видел предоставленный вами пример кода.Во - это то, что вы можете попробовать, основываясь на том, что я видел в вашем примере, протестировали его локально на моей машине и работали. Дайте мне знать, если у вас есть другие проблемы. cking24343

Похожие вопросы