Tag: rest

在Android模拟器上调用REST API会导致应用程序崩溃

我对android studio比较陌生。 我正尝试构建一个非常简单的应用程序,使用Bittrex交换API获取加密货币的价格。 然而,每次我尝试从URL获取信息,我的应用程序崩溃。 顺便说一句,我正在使用Kotlin。 我有麻烦解决这个问题,因为我不知道如何在调试模式下运行模拟器,只是编译器。 这是我的代码: package com.example.sebastian.cryptoapp import android.support.v7.app.AppCompatActivity import android.os.Bundle import java.net.URL import java.net.MalformedURLException import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { fun search(): String { //read in value var market = searchBar.getText().toString() //output text from URL query val result = URL(“https://bittrex.com/api/v1.1/public/getticker?market=” + market).readText() return result } fun getPrice(): String { //calling search […]

在JSON数据类中带有可选字段的types安全

我正在Kotlin中构建一个REST-API,并且正在尝试以我可以使用它们来访问API的方式编写我的数据类。 我打算建立一个通用的“数据库”,它将在服务器和使用API​​的客户端之间共享。 这到目前为止效果很好,但现在我需要在JSON响应中为可选字段建模。 例如:我有一个User对象(可以通过/user/{id}端点以典型的REST方式访问)。 现在,你并不总是需要例如用户的“关于我”文本,所以默认情况下它不包括在响应中。 但是,如果您指定”aboutme”字段( /user/{id}?fields=aboutme ),它将包含在响应中。 我可以建模数据类如下: data class User(id: UUID, name: String, aboutMe: String?) 但是现在我每次访问它时都必须对域进行空检查,即使它显然不为空。 我想为API创建一个types安全的前端,所以当我这样做时,例如myCoolApi.getUser({id}, User::aboutMe)我将得到一个User对象,其中aboutMe不可为空。 我想可以用generics来实现这一点,但是如果涉及多个可选字段,那将会变得非常冗长。 我有兴趣的任何建议。 根据要求,我会添加更多的代码来显示我所追求的。 class MyApi { fun getUser(id: UUID, vararg fields: KProperty1): User } // usage: val myApi: MyApi = TODO() val userId: UUID = TODO() val aboutMe: String = myApi.getUser(userId).aboutMe // does not compile, […]

Jersey CORS配置允许来自服务器的响应cookie

我有一个泽西岛REST接口,我希望在每个请求的响应中发送cookie,但在任何响应中都不会出现cookie。 我有一种感觉,这是一个CORS的问题,我不知道什么CORSResponseFilter配置我需要允许设置cookie并成功发送响应。 我的项目是用Kotlin下的SpringBoot构建的。 响应码: @POST fun put(): Response { val cookie = NewCookie(Cookie(“RESERVATION”, “TEST”), “Session”, 60 * 60, false) return ok() .cookie(cookie) .entity(Result(“OK”, “Success”)) .build() } 过滤代码: open class CORSResponseFilter : ContainerResponseFilter { override fun filter(req: ContainerRequestContext?, res: ContainerResponseContext?) { res?.headers?.add(“Access-Control-Allow-Origin”, “*”) res?.headers?.add(“Access-Control-Allow-Methods”, “POST, GET”) res?.headers?.add(“Access-Control-Allow-Headers”, “origin, content-type, accept, authorization”) res?.headers?.add(“Access-Control-Expose-Headers”, “Set-Cookie”) res?.headers?.add(“Access-Control-Allow-Credentials”, “true”) } […]

使用Kotlin将字符串发布到服务器API(OkHttp / Retrofit)

我正在尝试使用OkHttp或Retrofit将字符串发布到Kotlin中的API。 如果我只使用OkHttp ,不管我POST什么,我总是会得到一个空的数组。 private fun sendRegistrationToServer(refreshedToken: String) { Log.e(_tag, “Refreshed token: ” + refreshedToken) val okClient = OkHttpClient() val requestBody = FormBody.Builder() .add(“id”, “0”) .add(“token”, refreshedToken) .build() val request = Request.Builder() .url(“http://192.168.1.27/testApi/updates”) .post(requestBody) .build() try { val response = okClient.newCall(request).execute() Log.e(“B_RES”, response.body()?.string()) } catch (e: IOException) { Log.e(“RES_FAIL”, e.toString()) } } Logcat说: 01-09 17:58:24.054 20439-20670/testApi.testApi_android […]

为android @Multipart改装删除默认标题

创建@Multipart请求会为每个部分添加这些默认标题(Content-Transfer-Encoding,Content-Type),有什么方法可以删除它们吗? //REQUEST BODY –25d35373-d2c3-46a3-969f-f5a1fd5f781a Content-Disposition: form-data; name="client_id" Content-Transfer-Encoding: binary <– remove this one Content-Type: application/json; charset=UTF-8 <– remove this one Content-Length: 34 "40ccfee680a844780a41fbe23ea89934" // 注:我没有访问服务器,所以我不能让服务器接受这些头。

在Android模拟器上调用REST API会导致应用程序崩溃

我对android studio比较陌生。 我正尝试构建一个非常简单的应用程序,使用Bittrex交换API获取加密货币的价格。 然而,每次我尝试从URL获取信息,我的应用程序崩溃。 顺便说一句,我正在使用Kotlin。 我有麻烦解决这个问题,因为我不知道如何在调试模式下运行模拟器,只是编译器。 这是我的代码: package com.example.sebastian.cryptoapp import android.support.v7.app.AppCompatActivity import android.os.Bundle import java.net.URL import java.net.MalformedURLException import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { fun search(): String { //read in value var market = searchBar.getText().toString() //output text from URL query val result = URL("https://bittrex.com/api/v1.1/public/getticker?market=" + market).readText() return result } fun getPrice(): String { //calling search […]